сортировка массивов 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. Например, без сортировки вывод будет:

название-1 55

название-2 90

название-3 66

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

название-2 90

название-3 66

название-1 55

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

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


person magicPenguin    schedule 07.02.2012    source источник


Ответы (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);
    }

}

Вы можете отсортировать его позже, используя функцию сортировки массива на основе процента. Используйте это: сортировать. Потому что:

Эта функция сортирует массив таким образом, чтобы индексы массива сохраняли свою корреляцию с элементами массива, с которыми они связаны. Это используется в основном при сортировке ассоциативных массивов, где важен фактический порядок элементов.

Для печати сделайте так:

foreach($arrayTP as $title => $percent ) {
.
.
.
person ThinkingMonkey    schedule 07.02.2012
comment
Фантастика, которая отлично работает! Я занимался этим весь день, так что большое спасибо. - person magicPenguin; 08.02.2012