很多情况下,我们数据库是以二维数据存储的,但是我们查出来以后,需要转成一维数组,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的问题
key_field 如果是纯数字的字符串,在转换结果里会被默认转换成为 数字索引,如果此时使用
foreach($res_arr as $key=>$val){}
获取到的 $key 将会是纯数字,如果用来查询长编号的字符串字段对应的mysql 数据库 会查询异常,返回不符合条件的数据
所以使用key查询时,请确定查询字段的类型