4
回答
将这两个数组用PHP弄成最后的样子,最优化的方法~~
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

将这两个数组用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')); 

PHP
举报
共有4个答案 最后回答: 4年前

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

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

--- 共有 1 条评论 ---
richcem404我也想看看更逆天的优化 5年前 回复
方法一(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);

引用来自“Frank_mc”的答案

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

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

foreach( $cat as $key=>&$row ){
    $row['catid'] = $key;
}
--- 共有 1 条评论 ---
Frank_mc你这个结果的数据跟楼主的是不一样的,楼主的结果是没有key的 5年前 回复
$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);
顶部