2014-09-29 466 views
1

我有阵列这样如何在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) 
      ); 

,我要重命名项值0到PRODUCT_ID和1至数量。所以最后我想要这样的阵列

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

我该怎么办呢?

+0

你有什么已经尝试过? – BenM 2014-09-29 09:42:04

回答

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); 
+0

thanx!这就是我所寻找的解决方案。 – 2014-09-29 09:48:39

+1

肯定@LokeshJain我很高兴这有帮助 – Ghost 2014-09-29 09:48:53

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

试试这个

foreach($abc as &$element) { 
    $element['product_id']=$element[0]; 
    unset($element[0]); 
    $element['qty']=$element[1]; 
    unset($element[1]); 
} 
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更多