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

63
8

У меня такой массив

$abc = array(
array(0=>354,1=>2),
array(0=>358,1=>1),
array(0=>344,1=>1),
array(0=>374,1=>5),
array(0=>364,1=>1)
);

и я хочу переименовать значение ключа 0 в product_id и от 1 до qty. так что, наконец, я хочу, чтобы такой массив

$abc = array(
array('product_id'=>354,'qty'=>2),
array('product_id'=>358,'qty'=>1),
array('product_id'=>344,'qty'=>1),
array('product_id'=>374,'qty'=>5),
array('product_id'=>364,'qty'=>1)
);

как мне это сделать?

спросил(а) 2021-01-28T00:19:00+03:00 3 месяца, 1 неделя назад
1
Решение
87

Вы можете перенести их в другой, а затем использовать нужные ключи и закольтать их с помощью array_combine():

$abc = array(
array(0=>354,1=>2),
array(0=>358,1=>1),
array(0=>344,1=>1),
array(0=>374,1=>5),
array(0=>364,1=>1)
);

$new_keys = array('product_id', 'qty');
$new_abc = array();
foreach($abc as $val) {
$new_abc[] = array_combine($new_keys, $val);
}

echo '<pre>';
print_r($new_abc);

В результате:

Array
(
[0] => Array
(
[product_id] => 354
[qty] => 2
)

[1] => Array
(
[product_id] => 358
[qty] => 1
)
.. and so on

В качестве альтернативы вы также можете использовать array_map() для этой цели:

$new_keys = array('product_id', 'qty');
$new_abc = array_map(function($piece) use ($new_keys){
return array_combine($new_keys, $piece);
}, $abc);

ответил(а) 2021-01-28T00:19:00+03:00 3 месяца, 1 неделя назад
62

Вы можете использовать array_map() в php и попробовать это

$abc = array(
array(0=>354,1=>2),
array(0=>358,1=>1),
array(0=>344,1=>1),
array(0=>374,1=>5),
array(0=>364,1=>1)
);

$newArr = array_map(function($abc) {
return array(
'product_id' => $abc['0'],
'qty' => $abc['1']
);
}, $abc);
print_r($newArr);


Проверьте это для более

ответил(а) 2021-01-28T00:19:00+03:00 3 месяца, 1 неделя назад
62

попробуй это

foreach($abc as &$element) {
$element['product_id']=$element[0];
unset($element[0]);
$element['qty']=$element[1];
unset($element[1]);
}

ответил(а) 2021-01-28T00:19:00+03:00 3 месяца, 1 неделя назад
45

$arr[$newkey] = $arr[$oldkey];
unset($arr[$oldkey]);

ответил(а) 2021-01-28T00:19:00+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема