使用传递的数组递归替换第一个数组的元素 array_replace_recursive
$base= array('citrus'=> array( "orange") , 'berries'=> array("blackberry", "raspberry"), );
$replacements= array('citrus'=> array('pineapple'), 'berries'=> array('blueberry'));
$basket= array_replace_recursive($base, $replacements);
带索引检查计算数组的交集,用回调函数比较索引 array_intersect_uassoc
$array1= array("a"=> "green", "b"=> "brown", "c"=> "blue", "red");
$array2= array("a"=> "GREEN", "B"=> "brown", "yellow", "red");
print_r(array_intersect_uassoc($array1, $array2, "strcasecmp"));
递归地合并一个或多个数组 array_merge_recursive
$ar1= array("color"=> array("favorite"=> "red"), 5);\
$ar2= array(10, "color"=> array("favorite"=> "green", "blue"));\
$result= array_merge_recursive($ar1, $ar2);
使用传递的数组递归替换第一个数组的元素 array_replace_recursive
$base= array('citrus'=> array( "orange") , 'berries'=> array("blackberry", "raspberry"), );
$replacements= array('citrus'=> array('pineapple'), 'berries'=> array('blueberry'));
$basket= array_replace_recursive($base, $replacements);
print_r($basket);\
将一个线性数组转换为一个树,或者多维数组
functionarray_stack (&$a, $p= '@parent', $c= '@children')
{
$l= $t= array();
foreach($aAS $key=> $val):
if(!$val[$p]) $t[$key] =& $l[$key];
else$l[$val[$p]][$c][$key] =& $l[$key];
$l[$key] = (array)$l[$key] + $val;
endforeach;
return$a= array('tree'=> $t, 'leaf'=> $l);
}
$node= array();
$node[1] = array('@parent'=> 0, 'title'=> 'I am node 1.');
$node[2] = array('@parent'=> 1, 'title'=> 'I am node 2.');
$node[3] = array('@parent'=> 2, 'title'=> 'I am node 3.');
$node[4] = array('@parent'=> 1, 'title'=> 'I am node 4.');
$node[5] = array('@parent'=> 4, 'title'=> 'I am node 5.');
print_r(array_stack($node));