PHP二维数组降一维函数array_column

     很多情况下,我们数据库是以二维数据存储的,但是我们查出来以后,需要转成一维数组,PHP有这么一个函数array_column,能实现大部分的 二维数组转一维数组

//PHP版本>= 5.5
//PHP二维数组降一维函数
$student = array(
   array('no' => 301,'name'=>'zhangsan','score'=>'60'),
   array('no' => 302,'name'=>'zhaoliu','score'=>'98'),
   array('no' => 305,'name'=>'lisi','score'=>'92'),
   array('no' => 308,'name'=>'wangwu','score'=>'71'),
   array('no' => 325,'name'=>'zhzousa','score'=>'80'),
);

1.更改某列为二维数组的索引

$arr1 = array_column($student,null,'no');
print_r($arr1);

打印结果:


Array
(
    [301] => Array
    (
        [no] => 301
        [name] => zhangsan
        [score] => 60
    )


    [302] => Array
    (
        [no] => 302
        [name] => zhaoliu
        [score] => 98
    )


    [305] => Array
    (
        [no] => 305
        [name] => lisi
        [score] => 92
    )


    [308] => Array
    (
        [no] => 308
        [name] => wangwu
        [score] => 71
    )


    [325] => Array
    (
        [no] => 325
        [name] => zhzousa
        [score] => 80
    )


)


2. 取其中一列组成新的一维数组

$arr2 = array_column($student,'no');
print_r($arr2);
打印结果:

Array
(
    [0] => 301
    [1] => 302
    [2] => 305
    [3] => 308
    [4] => 325
)

3. 二维数组中的俩列分别作为键和值

注意:参数分别是( 二维数组,作为值的列名,作为键的列名)

$arr3 = array_column($student,'name','no');
print_r($arr3);
打印结果:

Array
(
    [301] => zhangsan
    [302] => zhaoliu
    [305] => lisi
    [308] => wangwu
    [325] => zhzousa
)

4. array_column的问题

【注意】:使用 $res_arr = array_column($arr,'value_field','key_field') 时

key_field 如果是纯数字的字符串,在转换结果里会被默认转换成为 数字索引,如果此时使用

foreach($res_arr as $key=>$val){}

获取到的 $key 将会是纯数字,如果用来查询长编号的字符串字段对应的mysql 数据库 会查询异常,返回不符合条件的数据

所以使用key查询时,请确定查询字段的类型 







猜你喜欢

转载自blog.csdn.net/wujiangwei567/article/details/78856400