PHP:哈希数据库结果的最快方法?

时间:2013-08-05 11:03:32

标签: php

假设我做了一个查询:

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;

转换数组的最快方法是什么,以便它的关键是数组中的项目之一?即,优选地没有循环和分配?

3 个答案:

答案 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;

然后你不必在事件发生后添加任何处理。