數組映射思路-避免雙重foreach

//數組映射計算

//適用於數組1和數組2中有重複的字段

$arr = array(
array('uid'=>123,'message'=>'消息','class'=>1),
array('uid'=>123,'message'=>'消息','class'=>2),
array('uid'=>123,'message'=>'消息','class'=>3),
array('uid'=>123,'message'=>'消息','class'=>4),
array('uid'=>123,'message'=>'消息','class'=>5)

);

$ars = array(
array('class'=>5,'class_name'=>'水果'),
array('class'=>3,'class_name'=>'健身'),
array('class'=>4,'class_name'=>'運動'),
array('class'=>2,'class_name'=>'運動2'),
array('class'=>1,'class_name'=>'步行'),
);

/**
 * 將2+維數組第2維的某列的值作爲key
 *
 * @param array $arr input/out parameter
 * @param string $cloumn
 * @return void
 */
function array_change_key(&$arr, $column)
{   
    if (empty($arr)) {
        return;
    }
    $newArr = array();
    foreach ($arr as &$val) {
        $newArr[$val[$column]] = &$val;
    }
    $arr = $newArr;
    return $arr;
}

//將數組$ars 以class的值做爲鍵名
$new_ars = array_change_key($ars, 'class');

foreach($arr as $k=>$v){
$arr[$k]['class_name'] = $new_ars[$v['class']]['class_name'];
}
echo "<pre>";

print_r($arr);

//結果輸出


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章