Как задать переменные для массива в момент его создания из другого массива?
Перекладываю один массив $row в другой $services и разбиваю по id для удобства в дальнейшей работе, так:
$services = [];
while($row = $results->fetch_assoc()) {
if ($row["payment_service"] == 'PayPal'){
$paypal_item_number = $row["id"];
$paypal_amount = $row["amount"];
$paypal_curr_code = $row["currency_code"];
$services[$row["id"]] = $row;
}
}
В первом массиве есть данные, которые нужно изменить, например, ["paypal_email"]=> string(16) "[email protected]", но мне нужно получить результат ["business"]=> string(16) "[email protected]".
Т.е. мне необходимо изменить часть названий, которые по умолчанию берутся из базы данных и не могут быть заранее в ней изменены.
Как в момент создания второго массива изменить названия?
Массив
array(8) {
["id"]=>
string(2) "74"
["amount"]=>
string(2) "10"
["currency_code"]=>
string(3) "USD"
["validity"]=>
string(2) "72"
["payment_service"]=>
string(6) "PayPal"
["paypal_email"]=>
string(16) "[email protected]"
["stripe_pkey"]=>
string(0) ""
["status"]=>
string(1) "1"
}...
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
$firstArray = [
'paypal_email' => '[email protected]',
'payment_service' => 'PayPal',
'currency_code' => 'USD'
];
$secondArray = $firstArray;
unset($secondArray['paypal_email']);
$secondArray['business'] = $firstArray['paypal_email'];
Так же можно воспользоваться array_map
$secondArray = array_map(function($item) {
return array(
'business' => $item['paypal_email'],
'currency_code' => $item['currency_code'],
// ... и т.д.
);
}, $firstArray);
Ещё
$array = [ 'oldkey' => [ 'oldkey' => 'wow'] ];
$new_array = json_decode(str_replace('"oldkey":', '"newkey":', json_encode($array)));