php二位数组的处理

$a = array(

0 => array('id' => 4521, 'name' => '北京'),
1 => array('id' => 4345, 'name' => '上海'),
2 => array('id' => 4345, 'name' => '上海'),

);
$b = array(

0 => array('code' => '010', 'name' => '北京'),
1 => array('code' => '021', 'name' => '上海'),
2 => array('code' => '010', 'name' => '上海'),

);

最终答案:
id name code
4345 上海 021
4521 北京 北京

写一段代码,将上面两个数组以一下形式显示,id从小到大排序,并且过滤掉name的重复值

阅读 1.5k
1 个回答
<?php
$a = array(
    3 => array('id' => 4521, 'name' => '北京'),
    1 => array('id' => 4345, 'name' => '上海'),
    2 => array('id' => 4345, 'name' => '上海'),
);
$b = array(

    0 => array('code' => '010', 'name' => '北京'),
    1 => array('code' => '021', 'name' => '上海'),
    2 => array('code' => '010', 'name' => '上海'),
);

$id = array_column($a,'id');
//从小到大排列
asort($id);
//去重
$ids = array_unique($id);
//组装数据
foreach ($ids as $k=>$v){
    foreach ($a as $vn){
        if ($v == $vn['id']){
            $ret[$k] = $vn;
        }
    }
    $names = array();
    foreach ($b as $vc){
        if ($ret[$k]['name'] == $vc['name'] && !in_array($vc['name'],$names)){
            $names [] = $vc['name'];
            $ret[$k]['code'] = $vc['code'];
        }
    }}
var_dump($ret);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题