我有一个输出这些值的数组:
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值。如何最好地实现这一目标?
答案 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'];
}