Rumah >pembangunan bahagian belakang >tutorial php >php 合并多维数组问题
有2个数组
<code>$array1 =[ [0]=> array(3) { ["id"]=> "1", ["uid"]=>'123', ["status"]=>'0' [1]=> array(3) { ["id"]=> "2", ["uid"]=>'321', ["status"]=>'1' ] $array2 =[ [0]=> array(2) { ["uid"]=> "123", ["name"]=>'张三' [1]=> array(2) { ["uid"]=> "321", ["name"]=>'李四' ] </code>
我在循环输出array1的时候。如何把uid替换成array2中的name?
<code>foreach($array1 as $item) { $item['status']= $item['status']==1?'是':'否'; $item['uid']= xxx;//这里如何替换成name? $newarr[] = $item; } </code>
有2个数组
<code>$array1 =[ [0]=> array(3) { ["id"]=> "1", ["uid"]=>'123', ["status"]=>'0' [1]=> array(3) { ["id"]=> "2", ["uid"]=>'321', ["status"]=>'1' ] $array2 =[ [0]=> array(2) { ["uid"]=> "123", ["name"]=>'张三' [1]=> array(2) { ["uid"]=> "321", ["name"]=>'李四' ] </code>
我在循环输出array1的时候。如何把uid替换成array2中的name?
<code>foreach($array1 as $item) { $item['status']= $item['status']==1?'是':'否'; $item['uid']= xxx;//这里如何替换成name? $newarr[] = $item; } </code>
2个数组的匹配数据的位置是一一对应的么? 如果这样, 比较简单:
<code>$count = count($array1); for ($i = 0; $i </code>
这样就可以了, 这种情况用foreach反而不方便.
假如数据不匹配, 需要在array2中搜索的话, 给个简单的例子:
<code>foreach ($array1 as &$item) { $item['uid'] = get_name($array2, $item['uid']); } function get_name(&$data, $uid) { foreach ($data as &$item) { if ($item['uid'] == $uid) { $name = $item['name'] unset($item); return $name; } } } </code>
再来拓展一下
<code>$array3 = function() use($array2) { $res = array(); foreach ($array2 as $item) { $res[$item['uid']] = $item['name']; } return $res; }; foreach ($array1 as &$item) { $item['uid'] = $array3[$item['uid']]; } </code>
<code>$array2 = array_column($array2, 'name', 'uid'); foreach($array1 as &$arr) $arr['uid'] = $array2[$arr['uid']]; </code>
喷了,换个思路?
http://php.net/manual/en/function.array-merge-recursive.php