对simple_html_dom数组进行排序

时间:2012-02-07 19:36:46

标签: php arrays sorting 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);
    }

}

我正在比较从外部网站带回的标题与变量$ test的相似程度,在这种情况下只是一个例子。

接下来,我希望根据$ percent变量对输出进行排序。例如,没有排序,输出将是:

title-1 55

title-2 90

title-3 66

但是我希望它被排序:

title-2 90

title-3 66

title-1 55

我尝试过使用array_multisort但是它只能独立地对每个数组进行排序。我已经看过usort和ksort,但无法得到合适的答案。

任何帮助将不胜感激!我从来没有在PHP中使用任何类型的排序,只是开始学习数组,所以请放轻松我。

1 个答案:

答案 0 :(得分: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 ) {
.
.
.