2011-10-26 13 views
0

現在,這裏的代碼:如何在此數組中添加元素?

$men = array(
    array('name'=>'NO.1', 'age' => 11), 
    array('name'=>'NO.2', 'age' => 22), 
    array('name'=>'NO.3', 'age' => 33), 
); 

$result = array(); 

echo '<pre>'; 

foreach($men as $value){ 
    $result[] = $value; 
    $result[]['gender'] = 'M'; 
} 
unset($arr1); 

var_dump($result); 

,但似乎出了點問題,我想要得到的是...

$result = array(
    array('name'=>'NO.1', 'age' => 11, 'gender' => 'M'), 
    array('name'=>'NO.2', 'age' => 22, 'gender' => 'M'), 
    array('name'=>'NO.3', 'age' => 33, 'gender' => 'M'), 
); 

我應該如何解決?任何人都可以告訴我,謝謝。

回答

3

你應該這樣做,而不是:

foreach($men as $value){ 
    $value['gender'] = 'M'; 
    $result[] = $value; 
} 
+0

簡單而優雅,謝謝^^ – shawjia

0

試試這個:

$men = array(
    array('name'=>'NO.1', 'age' => 11), 
    array('name'=>'NO.2', 'age' => 22), 
    array('name'=>'NO.3', 'age' => 33), 
); 

$result = array(); 

foreach($men as $key=>$value){ 
    $thisMen = $men[$key]; 
    $thisMen['gender'] = 'M'; 
    $result[] = $thisMen; 
} 

var_dump($result); 

您也可以通過執行類似

for($i=0;$i<count($men);$i++){ 
    $result[] = $men[$i]; 
    $result[$i]["gender"] = 'M'; 
} 

或避免額外的$ thisMen變量,只是引用原始數組值,並改變它們,如下

foreach($men as &$thisMen) 
    $thisMen["gender"] = 'M'; 

Shai。

0

你可以這樣做:

$newArray = array(); 
foreach($men as $value){ 
    $result[] = $value; 
    $result['gender'] = 'M'; 
    $newArray[] = $result; 
} 
$men = $newArray; 
unset($newArray); 
0
<?php 
    $men = array(
     array('name'=>'NO.1', 'age' => 11), 
     array('name'=>'NO.2', 'age' => 22), 
     array('name'=>'NO.3', 'age' => 33), 
    ); 

    $result = array(); 

    echo '<pre>'; 

    foreach($men as $value){ 
     $result[] = array_merge($value, array('gender' => 'M')); 
    } 
    unset($arr1); 
    var_dump($result); 
?> 
0

而不是

foreach($men as $value){ 
    $result[] = $value; 
    $result[]['gender'] = 'M'; 
} 

使用

foreach($men as $value){ 
    $value['gender'] ='M'; 
    array_push($result, $value); 
} 

這將循環遍歷每個內部陣列,將gender字段添加到每個陣列並將它們推送到$result陣列。

使用此方法,原始$men陣列保持不變。

但是,如果你想改變原有的陣列,以及,你可以添加只是$valueforeach循環將使用在創建副本到內部數組引用之前的符號(&)。這可以如下完成。

foreach($men as &$value){ 
    $value['gender'] ='M'; 
    array_push($result, $value); 
}