сортировка массивов simple_html_dom - PullRequest
1 голос
/ 07 февраля 2012

Я уже давно пытаюсь заставить это работать!

Я пытаюсь отсортировать два массива, чтобы они оба упорядочивались в зависимости от значений внутри одного из массивов. Я не знаю, как «прикрепить» массивы, чтобы оба были упорядочены.

Вот мой код:

$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, которая в данном случае является лишь примером.

Далее я хочу отсортировать вывод в зависимости от переменных $ процента. Например, без сортировки вывод будет:

title-1 55

title-2 90

title-3 66

Однако я хочу, чтобы это было отсортировано:

title-2 90

title-3 66

title-1 55

Я попытался использовать array_multisort, однако он будет сортировать каждый массив независимо. Я также посмотрел на usort и ksort, но не смог получить рабочий ответ.

Любая помощь будет принята с благодарностью! Я никогда не использовал никакой сортировки в PHP и только начал изучать массивы, поэтому, пожалуйста, будьте осторожны со мной.

1 Ответ

1 голос
/ 08 февраля 2012

Я бы посоветовал вам сделать следующее: вместо хранения 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 ) {
.
.
.
...