2010-12-06 111 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

相关问题