通过对象内的键从对象数组中获取字段值

时间:2012-10-27 07:24:32

标签: php arrays php-5.2

这是一个非常愚蠢的问题,我无法相信我会问这样简单的事情。

我正在使用db->get['table']->result()从表中获取数据。

表模式如下所示:table(id,col1,col2)。

db->get['table']->result()返回类似这样的内容(print_r):

Array
(
[0] => stdClass Object
    (
        [id] => 1
        [col1] => "id 1 col 1"
        [col2] => "id 1 col 2"
    )

[1] => stdClass Object
    (
        [id] => 2
        [col1] => "id 2 col 1"
        [col2] => "id 2 col 2"
    )

[2] => stdClass Object
    (
        [id] => 3
        [col1] => "id 3 col 1"
        [col2] => "id 3 col 2"
    )
}

现在我需要从id = 2的行获取col2值,我想在没有“foreach”循环的情况下进行。

我以为我可以这样做:

$valueThatINeed = $myArray[2]->col2;

这是错的,我知道为什么错。

问题是 - 如何在没有循环的情况下直接得到我需要的东西?

2 个答案:

答案 0 :(得分:0)

my_filter($array,$ID) {
     $col2 = array_values(array_filter($array, function($arrayValue) use($ID) { return $arrayValue[0] == $ID; } ));
     if (count($col2) > 0) {
        return $col2[0][2];
     } else {
        return false;
    }
}

$col2 = my_filter($arr,2);

答案 1 :(得分:0)

嗯,你可以使用array_uintersect和一个只比较$ id属性的回调函数,但它有点笨拙,并且可能不比简单的for循环快。

也许我们应该从不同的角度来看待...可能找到正确记录的最有效方法是在数据库中激活SELECT查询 - 毕竟这正是为数据库优化的,特别是作为id列将被索引(假设id是主键)。

原帖:

  

我认为这不仅仅是:

     

$ valueThatINeed = $ myArray [2] - > $ col2;