我有一個特定的順序的項目列表,所以我已經決定將它們存儲在一個數組如何獲得一個關鍵的一個指標,我知道是唯一的在一個數組
$items = array(
"apple",
"banana",
"pear"
);
如果程序用參數「香蕉」調用我需要能夠說「蘋果」來之前和「梨」之後。目前我正在做這樣的事情:
foreach($items as $k=>$v) { if ($v == "banana") { $current_key = $k }
所以,現在我知道,$ current_key -1是以前和+1是下一個。它的工作原理,它只是感覺醜陋迭代整個陣列。有一個更好的方法嗎?
UPDATE 如果有人關心,我決定做一些快速測試,看看獲取信息的方式有多快。在1000次迭代,6000個項目組成的數組,microtime中retunred:
我的發佈方式:4.567 Array_Search:2.749
雖然我想我也嘗試了存儲陣列的排列像數據的方法:
$items['banana']['next'] = 'pear';
$items['banana']['prev'] = 'apple';
這當然是英里(0.0005)的贏家。這些都不是真的有意義,我只是好奇,想和任何讀這個的人分享。
對不起,但我覺得有必要挑剔你的術語:「蘋果」,「香蕉」和「梨」是不是在你的例子鑰匙,他們是價值。它們將是以下示例中的鍵:array(「apple」=>「round」,「banana」=>「long」,「pear」=>「oblong」)。 你所說的$ current_key可以更好地描述爲遊標或索引。 – 2010-01-04 20:21:50
是的,並且即時使用VALUE查找示例中的KEY ...您會注意到$ current_key的值被設置爲數組索引,而不是數值。然而,這個標題是錯誤的,因爲我得到了一個我認爲是唯一的值的索引: – Erik 2010-01-04 20:37:31