我一直想让它工作一段时间!
我要做的是对两个数组进行排序,因此它们都会根据其中一个数组中的值进行排序。我不知道如何“附加”数组,因此两者都有序。
这是我的代码:
$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中使用任何类型的排序,只是开始学习数组,所以请放轻松我。
答案 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 ) {
.
.
.