从数组中获取特定数据,基于另一个价值

时间:2012-03-12 16:36:29

标签: php arrays

我有一个输出这些值的数组:

Array ( 
    [0] => stdClass Object ( 
        [ID] => 6585
        [COLOR] => red 
        [Name] => steve
        ) 
    [1] => stdClass Object ( 
        [ID] => 5476 
        [COLOR] => blue 
        [Name] => sol
        ) 
    [2] => stdClass Object ( 
        [ID] => 7564 
        [COLOR] => yellow 
        [Name] => jake 
        ) 
    [3] => stdClass Object ( 
        [ID] => 3465 
        [COLOR] => green 
        [Name] => helen 
        ) 
    )

现在,我将知道该人的ID,并且我需要获取该特定值集的COLOR值。如何最好地实现这一目标?

4 个答案:

答案 0 :(得分:4)

这样的事情:

function getColorById($arr, $id){
    foreach($arr as $item){
        if ($item->ID == $id)
            return $item->COLOR;
    }
    return "blah!";
}

echo getColorById($arr, 3465);

一样使用

修改: 拥有数据的方式会降低访问速度。一个更好的建议是(因为看起来ID是唯一的),你宁愿将它作为数组的关键。你现在有整数索引。构造数组(除非您从某个区域接收它超出了您可以控制的范围),如下所示:

$arr = array();
$arr["ID_4634"] = <object>;

答案 1 :(得分:2)

您可能希望更改存储方式以便更快地访问。

使用当前格式,您需要遍历元素并比较颜色,直到找到匹配项。

for($i=0;$i<count($array);$i++){
  if($array[$i]['ID'] == $id)
    return $array[$i]['COLOR']
}

或者,将ID作为密钥存储。

答案 2 :(得分:1)

$users = array();
$count = count($arr);
for ($i = 0; $i < $count; $i++) {
    $users[$arr[$i]['ID']] = array(
        'Name' => $arr[$i]['Name'],
        'COLOR' => $arr[$i]['COLOR']
    );
}
echo $users[$id]['COLOR'];

其中$ arr表示您在初始帖子中输出的数组,而$ id是您尝试访问的颜色的人的ID。您也可以使用

获取他们的名字
echo $users[$id]['Name'];

答案 3 :(得分:0)

ID请尝试以下:

for($i=0; $i<count($array); $i++)
{
  if($array[$i]['ID'] == $id)
    return $array[$i]['COLOR'];
}