2014-09-29 78 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更多