Задать вопрос
@Shimpanze

Как в PHP отсортировать такие элементы?

Здравствуйте!

Есть примерная конструкция:

<ul>
   <li>Конфеты</li>
   <li>Пряники</li>
   <li>Асфальт</li>
</ul>


Необходимо отсортировать их так (в необходимом порядке):

<ul>
   <li>Пряники</li>
   <li>Асфальт</li>
   <li>Конфеты</li>
</ul>


Сейчас делаю примерно так:

$category_name;
$accumulation;

foreach( $elements as $element ) {
  $category_name = preg_split( '/\n/', $element->textContent, -1, PREG_SPLIT_NO_EMPTY );

  if ( mb_stripos( $category_name[0], 'Пряники' ) !== false ) {
    $accumulation .= $element->ownerDocument->saveHTML( $element );
    continue;
  }
  else if ( mb_stripos( $category_name[0], 'Асфальт' ) !== false ) {
    $accumulation .= $element->ownerDocument->saveHTML( $element );
    continue;
  }
  else if ( mb_stripos( $category_name[0], 'Конфеты' ) !== false ) {
    $accumulation .= $element->ownerDocument->saveHTML( $element );
    continue;
  }
}

echo $accumulation;


Но порядок вообще не меняется. Почему?

Спасибо!
  • Вопрос задан
  • 142 просмотра
Подписаться 2 Простой 4 комментария
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
<?php
function my_sorting($in, $sort)
{
    $tmp = array();
    foreach ($sort as $k => $v) $tmp[$k] = "";
    foreach ($in as $v) ($t = array_search($v, $sort)) !== false ? $tmp[$t] .= $v."\n" : $tmp[] = $v."\n";
    return implode("", $tmp);
}

$arr = array("Асфальт", "Карапуз", "Конфеты", "Пряники");
var_dump(my_sorting($arr, array("Пряники", "Асфальт", "Конфеты")));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Потому что в каком порядке вы их получили, в том вы и вставляете, и неважно какой if сработал.

Как вариант - вынести их в массив и применить какую-то из функций сортировки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы