簡體   English   中英

根據另一個值從數組中獲取特定數據

[英]Get Specific Data From Array, Based On Another Value

我有一個輸出這些值的數組:

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值。 請問如何最好地做到這一點?

像這樣:

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

您可能想要更改存儲方式,以便更快地訪問。

使用當前格式,您將需要遍歷元素並比較顏色,直到找到匹配項。

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

或者,將其與ID一起存儲為密鑰。

$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'];

ID嘗試以下:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM