2012-02-07 81 views
1

我一直試圖讓這個工作一段時間了!排序simple_html_dom數組

我想要做的是排序兩個數組,所以他們都得到有序取決於其中一個數組內的值。我不知道如何「附加」陣列,所以都訂購。

這裏是我的代碼:

$html = file_get_html('http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=hat&x=0&y=0'); 
$test = strtolower("Beechfield Turn-up Beanie"); 

$arrayT = array(); 
$arrayP = array(); 

foreach ($html->find('div.product') as $results) { 
    foreach ($results->find('a.title') as $title) { 
     $titleLow = strtolower($title->plaintext); 
     similar_text($test, $titleLow, $percent); 
     $arrayT[] = $title->plaintext; 
     $arrayP[] = round($percent); 
    } 

} 

我比較標題多麼的相似帶來從外面回來的網站是變量$測試,在這種情況下,僅僅是一個例子。

接下來我想根據$ percent變量對輸出進行排序。例如,沒有排序的輸出將是:

標題-1 55

標題-2 90

標題-3 66

但是我希望它被排序:

標題-2 90

標題-3 66

標題-1 55

我已經嘗試使用array_multisort,但它只會對每個數組進行獨立排序。我已經看過了usort和ksort,但無法得到有效的答案。

任何幫助,將不勝感激!我從來沒有使用任何類型的PHP排序,並且只開始學習陣列,所以請在我身上輕鬆一下。

回答

1

我建議你這樣做: 而不是在兩個不同的陣列中存儲title和百分比。

您可以將數組索引作爲標題。

像這樣:

$html = file_get_html('http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=hat&x=0&y=0'); 
$test = strtolower("Beechfield Turn-up Beanie"); 

$arrayTP = array(); 


foreach ($html->find('div.product') as $results) { 
    foreach ($results->find('a.title') as $title) { 
     $titleLow = strtolower($title->plaintext); 
     similar_text($one, $titleLow, $percent); 
     $arrayTP[$title->plaintext] = round($percent); 
    } 

} 

以後,您可以使用基於百分比的數組排序函數排序。使用這個:asort。 因爲:

此函數對數組進行排序,以便數組索引保持與它們關聯的數組元素的相關性。這主要用於排序實際元素順序非常重要的關聯數組。

對於印刷做到這一點:

foreach($arrayTP as $title => $percent) { 
. 
. 
. 
+0

神奇的作品太好了!我一整天都在這裏,所以非常感謝你。 – magicPenguin 2012-02-07 21:26:59

+0

@magicPenguin歡迎。 – ThinkingMonkey 2012-02-07 21:33:42