将一个索引排序的二维数组,变更为以二维数组中某个字段名为数组键名的操作。提取二维数组中的字段,并将其赋值为键名。
public function getAll()
{
$list = Db::name('category')->field('id,title')->select();
// 得到默认排序的结果集
// array(3) {
// [0]=>
// array(2) {
// ["id"]=>
// int(2)
// ["title"]=>
// string(12) "自然科学"
// }
// [1]=>
// array(2) {
// ["id"]=>
// int(1)
// ["title"]=>
// string(12) "文史艺术"
// }
// }
// 取出所有将要设置为键名的字段,组成新数组
$keys = array_column($list, 'title');
// array(3) {
// [0]=>
// int(2)
// [1]=>
// int(1)
// [2]=>
// int(6)
// }
// 将新数组键名键值调换位置,得到以设定字段为键名的数组
$keys = array_flip($keys);
// array(3) {
// [2]=>
// int(0)
// [1]=>
// int(1)
// [6]=>
// int(2)
// }
// 得到最终结果集,将设定字段变为原数组默认键名
foreach ($list as $k => $v) {
$keys[$v['id']]= $v;
}
// array(3) {
// [2]=>
// array(2) {
// ["id"]=>
// int(2)
// ["title"]=>
// string(12) "自然科学"
// }
// [1]=>
// array(2) {
// ["id"]=>
// int(1)
// ["title"]=>
// string(12) "文史艺术"
// }
// }
return $keys;
}
}