2012-02-07 52 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