cari

Rumah  >  Soal Jawab  >  teks badan

php 合并多维数组问题

有2个数组

$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"]=>'李四'
]

我在循环输出array1的时候。如何把uid替换成array2中的name?

foreach($array1 as $item) {
  $item['status']= $item['status']==1?'是':'否';
  $item['uid']= xxx;//这里如何替换成name?
  $newarr[] = $item;
}
巴扎黑巴扎黑2896 hari yang lalu279

membalas semua(3)saya akan balas

  • 巴扎黑

    巴扎黑2017-04-10 15:19:31

    2个数组的匹配数据的位置是一一对应的么? 如果这样, 比较简单:

    $count = count($array1);
    for ($i = 0; $i < $count; ++$i) {
        $array1[$i]['uid'] = $array2[$i]['name'];
    }
    

    这样就可以了, 这种情况用foreach反而不方便.

    假如数据不匹配, 需要在array2中搜索的话, 给个简单的例子:

    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;
            }
        }
    }
    

    再来拓展一下

    $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']];
    }
    

    balas
    0
  • PHP中文网

    PHP中文网2017-04-10 15:19:31

    $array2 = array_column($array2, 'name', 'uid');
    foreach($array1 as &$arr) $arr['uid'] = $array2[$arr['uid']];
    

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:19:31

    喷了,换个思路?
    http://php.net/manual/en/function.array-merge-recursive.php

    balas
    0
  • Batalbalas