将这两个数组用PHP弄成最后的样子,最优化的方法~~

不会武功的猪 发布于 2013/03/07 10:11
阅读 251
收藏 1
PHP

将这两个数组用PHP弄成最后的样子,最优化的方法~~

$menu = array(12,13);

$cat = array(12=>array('catname'=>'xxxx'),13->array('catname'=>'bbbb'));


这个样子的

最后弄成  $res = array(array('catid'=>12,'catname'=>'xxxx'),array('catid'=>13,'catname'=>'bbbb')); 

加载中
0
Frank_mc
Frank_mc

这个赋值能怎么优化啊……

$res = array();
foreach ($cat as $key =>$val) {
  $res[] = array(
             'catid' => $key,
             'catname' => $val['catname'],
           );
}

richcem404
richcem404
我也想看看更逆天的优化
0
Arrowing
Arrowing
方法一(array_map):
$menu = array(12,13);
$cat = array(12=>array('catname'=>'xxxx'),13=>array('catname'=>'bbbb'));
$cat = array_map('structArray', $menu, $cat);
function structArray($key, $val){
	$val['catid'] = $key;
	return $val;
}
print_r($cat);

方法二(array_walk):
$cat = array(12=>array('catname'=>'xxxx'),13=>array('catname'=>'bbbb'));
array_walk($cat, 'structArray');
function structArray(&$val, $key){
	$val['catid'] = $key;
}
print_r($cat);
0
飞晏
飞晏

引用来自“Frank_mc”的答案

这个赋值能怎么优化啊……

$res = array();
foreach ($cat as $key =>$val) {
  $res[] = array(
             'catid' => $key,
             'catname' => $val['catname'],
           );
}

foreach( $cat as $key=>&$row ){
    $row['catid'] = $key;
}
Frank_mc
Frank_mc
你这个结果的数据跟楼主的是不一样的,楼主的结果是没有key的
0
帖子列表
帖子列表
$menu = array(12,13);
$cat = array(12=>array('catname'=>'xxxx'), 13=>array('catname'=>'bbbb'));

$res = array();
foreach($cat as $k => $v){
  if(in_array($k, $menu)){
    $res[] = array('catid' => $k, 'catname' => $v['catname']);
  }
}

print_r($res);
返回顶部
顶部