у меня такой массив
[
123456 => 'John Doe'
654321 => 'Doe John'
]
Я хочу изменить ключ массива (123456 и 654321) на индекс (0,1,2,3,....,n) и сохранить его в значение, ожидаемый результат выглядит так
array(
0 => array(
'name' => 'John Doe',
'code' => 123456.
),
1 => array(
'name' => 'Doe John',
'code' => 654321.
),
)
это код, который я пробовал, я только что получил
$thearray= array_map(function ($value, $key) {
return $key;
}, $thearray, array_keys($thearray));
Используйте foreach
$pemeriksa = [
123456 => 'John Doe',
654321 => 'Doe John'
];
$newArray = [];
foreach ($pemeriksa as $key => $value) {
$newArray[] = ["name" => $value , "code" => $key];
}
print_r($newArray);
В цикле foreach определите ключи и значения, используя имя ключа, которое вы хотите видеть в результирующих строках. Затем вызовите compact()
в теле цикла, прежде чем вставлять данные новой строки в массив результатов.
Код: (Демо)
$result = [];
foreach ($thearray as $code => $name) {
$result[] = compact(['name', 'code']);
}
var_export($result);
Ваше программирование в функциональном стиле можно исправить следующим образом:
Код: (Демо)
var_export(
array_map(
fn($name, $code) => compact(['name', 'code']),
$thearray,
array_keys($thearray)
)
);
Отчасти связано: Используйте данные подмассива из json для создания строк ассоциативных массивов