PHP数组问题,求教

叶问
  • 77

图片描述

如图,想把这个数组重新组合,把name的值赋到下标那,这个怎么整?弄了半天都报错。。求教大佬

评论
阅读 694
5 个回答
$result = array_column($arr,NULL,'name');
var_dump($result);

这是我一直在用的助手函数,自己写的,作用就是把二维数组根据指定键重新索引。
如果索引键那里用,分割了两个字段 ,返回的是索引=>值 的形式,原来的第二维数组的其它数据会丢弃
第三个参数,决定索引后的值 是单个数组,还是二维数组
比如,在订单获取产品的场景,一个订单号可对应多个产品,那么可以把多个订单混合在一起的产品数据按订单号索引 ,索引出来后就是一个订单号对应该订单下的产品数组

/**
 * 索引二维数组
 * @param $arr array 二维数组
 * @param $index  string  索引
 * @param bool $ismulti 一对多模式
 * @return array
 */
function array_index($arr,$index,$ismulti=false){
    $return=[];
    if(!empty($arr)) {
        $val = '';
        if (strpos($index, ',') > 0) {
            $indexes = explode(',', $index);
            $index = trim($indexes[0]);
            $val = trim($indexes[1]);
        }
        foreach ($arr as $row) {
            if ($ismulti) {
                $return[$row[$index]][] = empty($val) ? $row : $row[$val];
            } else {
                $return[$row[$index]] = empty($val) ? $row : $row[$val];
            }
        }
    }
    return $return;
}

二楼正解

<?php 
    $a = array(
        array(
        'name' => '腾讯',
        'longitude' => '34.55555',
        'dimension' => '67.66666',
        ),
        array(
        'name' => '阿里',
        'longitude' => '54.3333',
        'dimension' => '23.66666',
        ),
        array(
        'name' => '百度',
        'longitude' => '78.99999',
        'dimension' => '98.77777',
        )
    );
    echo '<pre>';
    var_dump($a);
    $b = array_column($a,Null,'name');
    echo '</pre><hr><pre>';
    var_dump($b);
    echo '</pre>';
?>

执行前

执行后

PHP_VERSION 大于5.5还是5.6的时候才能用array_column,否则的话就只能自己封装方法了

暴力的方法,再整个数组用foreach

宣传栏