Home >Backend Development >PHP Tutorial >php 合并多维数组问题

php 合并多维数组问题

WBOY
WBOYOriginal
2016-06-06 20:38:511044browse

有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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn