鍍金池/ 問答/PHP/ php二位數(shù)組的處理

php二位數(shù)組的處理

$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 北京 北京

寫一段代碼,將上面兩個(gè)數(shù)組以一下形式顯示,id從小到大排序,并且過濾掉name的重復(fù)值

回答
編輯回答
懶洋洋
<?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);
//組裝數(shù)據(jù)
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);
2017年9月10日 21:47