如何在php中重命名数组的键值?

时间:2014-09-29 09:40:46

标签: php arrays

我有这样的数组

$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)
              );

我该怎么做?

4 个答案:

答案 0 :(得分:3)

您可以将它们转移到另一个,然后使用必要的密钥并使用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);

答案 1 :(得分:1)

试试这个

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

答案 2 :(得分:1)

你可以在php中使用array_map()并试试这个

$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);

Check this了解更多

答案 3 :(得分:0)

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