假设我做了一个查询:
select * from branches
现在,我得到一个结果:
ID | CODE | Name | etc...
1 | ABC | One | etc...
2 | BED | Two | etc...
3 | CPE | Three | etc...
4 | FEE | Four | etc...
我最终会得到一个可以像这样使用的数组:
$data[0]->name;
我想更改此数组,因此我可以这样调用它:
$data['ABC']->name;
转换数组的最快方法是什么,以便它的关键是数组中的项目之一?即,优选地没有循环和分配?
答案 0 :(得分:4)
我认为最简单的解决方案。
$assoc = array();
$length = count($data);
for($i = 0; $i < $length; $i++) {
$assoc[$data[$i]->CODE] = $data[$i];
}
print_r($assoc);
虽然我相信有一个单行解决方案。然而,不能记住这一点。
编辑:
更改了循环条件,打电话给Raymond。
答案 1 :(得分:1)
如果您真的想使用紧凑代码,这是一个内联解决方案。
但是,我认为这比简单的foreach
循环更麻烦。
$arr = array(your obj array);
$assoc = array();
array_walk($arr, function($v) {global $assoc; $assoc[$v->CODE]=$v;});
print_r($assoc);
答案 2 :(得分:0)
在脚本的某处,您必须通过结果集进行处理并构建此数组,以便为什么不回头看看。
你可能在做什么!
while ( $row = yourFetch ) {
$data[] = $row;
endwhile;
return $data;
你可以这样做: -
while ( $row = yourFetch ) {
$data[$row->CODE] = $row;
endwhile;
return $data;
然后你不必在事件发生后添加任何处理。