2010-12-06 109 views
2

這裏是我的陣列在PHP中的多維數組中推送一個元素到每個數組?

$myArr = array(array('one', 'two'), array('one', 'two')); 

我想一個元素添加到每個陣列內$ myArr,該。我不想循環每個數組,並添加該元素。有沒有更快的方法來實現這個使用array_maparray_walk ..最好是用一行代碼

結果數組應該像

$myArr = array(array('one', 'two','three'), array('one', 'two','three')); 

多謝

明白了,榮譽給@strager

$myvar = 'Three'; 

$myArr = array_map(function ($subarray) { global $myvar; $subarray[] = $myvar; return $subarray;}, $myArr); 

回答

2

隨着array_walk

array_walk($myArr, create_function('&$subarray', '$subarray[] = "three";')); 

隨着array_map

$myArr = array_map(create_function('$subarray', '$subarray[] = "three"; return $subarray;'), $myArr); 

使用匿名功能的array_map(未經測試,我沒有訪問PHP5.3):

$myArr = array_map(function ($subarray) { 
    $subarray[] = "three"; 
    return $subarray; 
}, $myArr); 

或當然,更好的解決方案(對於PHP < 5.3):

function pushToEndOfSubarrays($array, $item) { 
    $ret = array(); 

    foreach ($array as $key => $subarray) { 
     $subarray[] = $item; 
     $ret[$key] = $subarray; 
    } 

    return $ret; 
} 

$myArr = pushToEndOfSubarrays($myArr, 'three'); 
3

你可以使用函數array_push()推送陣列到陣列

int array_push (array &$array , mixed $var [, mixed $... ]); 

這可能會幫助你作爲你的要求。

謝謝。

+0

難道還不需要一個循環嗎?否則它將簡單地將該值附加到父數組的末尾而不是子節點。 – 2010-12-06 09:49:04

+0

提問者希望將一個元素推送到`$ myArr`內的每個數組。他們似乎不想將新陣列推送到`$ myArr`。 – strager 2010-12-06 09:49:16

相關問題