Как в двумерном массива первое значение в строке сделать ключом?

179
13 марта 2018, 04:00

Есть такой массив:

$rows2 = [
['id'=>'a1','update_at' => dddd,'create_at' => cccc],
['id'=>'a2','update_at' => dddd,'create_at' => cccc]
];

Как его сделать таким:

$rows2 = [
['a1' => ['update_at' => dddd,'create_at' => cccc]],
['a2' => ['update_at' => dddd,'create_at' => cccc]],
];
Answer 1

еще вариант для разнообразия

$rows2 = [
    ['id'=>'a1','update_at' => "dddd",'create_at' => "cccc"],
    ['id'=>'a2','update_at' => "dddd",'create_at' => "cccc"]
];

обратите внимание, у вас отсутствуют кавычки у значений в массиве.

$keys = array_column($rows2, 'id');
array_walk($rows2, function(&$v){ unset($v['id']);});
$result = array_combine($keys, $rows2);
print_r($result);
Answer 2

Ещё один вариант решения. Массив:

$rows2 = [
    ['id'=>'a1','update_at' => 'dddd','create_at' => 'cccc'],
    ['id'=>'a2','update_at' => 'dddd','create_at' => 'cccc']
];

Код:

$keys = array_column($rows2, 'id');
$vals = array_map(function($a)use($keys){ return array_diff($a,$keys); },$rows2);
$rows2 = array_combine($keys, $vals);
var_dump($rows2);

Результат:

array (size=2)
  'a1' => 
    array (size=2)
      'update_at' => string 'dddd' (length=4)
      'create_at' => string 'cccc' (length=4)
  'a2' => 
    array (size=2)
      'update_at' => string 'dddd' (length=4)
      'create_at' => string 'cccc' (length=4)
Answer 3

Можно трансформировать массив с помощью array_reduce:

$rows2 = [
['id'=>'a1','update_at' => 'dddd','create_at' => 'cccc'],
['id'=>'a2','update_at' => 'dddd','create_at' => 'cccc']
];
$res = array_reduce($rows2, function($acc, $c){
    $key = key($c); // Первый индекс ('id')
    $id = $c[$key]; // Значение id
    unset($c[$key]);// Удаляем id из строки
    $acc[$id] = $c;
    return $acc;
}, []);
var_dump($res);
READ ALSO
Даны три числа. Найдите их среднее арифметическое [требует правки]

Даны три числа. Найдите их среднее арифметическое [требует правки]

Даны три числаНайдите их среднее арифметическое

158
Как правильно составить файл cron?

Как правильно составить файл cron?

Мне нужно в определенный момент добавить данные в БДНужен файл cron

172
Проблема с json в while

Проблема с json в while

В цикле я собираю файлыМне нужно вернуть это в JSON в таком формате:

245
Вырезать только нужный текст

Вырезать только нужный текст

Есть строка Покупка паетов: Ntv_56°E, Xtra TV 4W на сумму 0066667 $

183