【问题标题】:how to rename key value of array in php? [duplicate]如何在php中重命名数组的键值? [复制]
【发布时间】:2014-09-29 09:40:46
【问题描述】:

我有这样的数组

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

我该怎么做?

【问题讨论】:

  • 你已经尝试了什么?

标签: php arrays


【解决方案1】:

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

【讨论】:

  • 谢谢!这就是我正在寻找的解决方案。
  • 当然 @LokeshJain 我很高兴这有帮助
【解决方案2】:

试试这个

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

【讨论】:

    【解决方案3】:

    你可以在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了解更多

    【讨论】:

      【解决方案4】:
      $arr[$newkey] = $arr[$oldkey];
      unset($arr[$oldkey]);
      

      【讨论】:

        猜你喜欢
        • 2012-03-25
        • 1970-01-01
        • 2011-09-04
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多