2016-02-05 2 views
-4

Привет всем У меня есть массив для серии сезона и эпизода названий Вот мой массивPhp элементы сортировки массива вопрос

- The Flash 2.Sezon 11.Bölüm 
- The Flash 2.Sezon 1.Bölüm 
- The Flash 1.Sezon 20.Bölüm 
- The Flash 2.Sezon 3.Bölüm 
- The Flash 3.Sezon 3.Bölüm 

(Sezon => сезон, Bölüm => эпизод в моем языке)

I хочу отсортировать их первый эпизод в последнем эпизоде ​​

- The Flash 1.Sezon 20.Bölüm 
- The Flash 2.Sezon 1.Bölüm 
- The Flash 2.Sezon 3.Bölüm 
- The Flash 2.Sezon 11.Bölüm 
- The Flash 3.Sezon 3.Bölüm 

Я пробовал функцию асарта, но не работал. Большинство пунктов в правильном порядке, но некоторые из них not.Here мой полный код:

$args=array('post_type' => 'bolum', 
      'posts_per_page' =>-1, 
      'orderby' => 'title', 
      'meta_query' => array(array(
            'key' => 'bolum_dizi', 
            'value' => '"' . $post_id . '"', // matches exaclty "123", not just 123. This prevents a match for "1234" 
            'compare' => 'LIKE' 
             ) 
           ) 
      ); 
$episodes = get_posts($args); 

И это, как я заказ и печать

asort($episodes); 
foreach($episodes as $episode){ 
echo $episode->post_title .'\n';} 

Как я могу это сделать? Большое спасибо.

+3

Каков ваш код? что вы пробовали? каков ожидаемый результат, каков фактический результат? мы можем помочь вам с проблемами в вашем коде, но мы не можем читать ваши мысли. о, и, может быть, дать ваши данные ввода в том же формате, что и в вашем коде. –

+0

Я упомянул в своем посте. Я попробовал asort ($ episodes); –

+2

просто разместите соответствующий код. а не только имя одной функции без достаточной информации о том, КАК она использовалась. –

ответ

2

Что вы ищете называется природного рода, которые могут быть достигнуты с помощью natsort() функции:

<?php 

$arr = array(
'- The Flash 2.Sezon 11.Bölüm', 
'- The Flash 2.Sezon 1.Bölüm', 
'- The Flash 1.Sezon 20.Bölüm', 
'- The Flash 2.Sezon 3.Bölüm', 
'- The Flash 3.Sezon 3.Bölüm', 
); 

natsort($arr); 

echo '<pre>'; 
var_dump($arr); 
echo '</pre>'; 

Результат будет выглядеть так:

array(5) { 
    [2]=> 
    string(30) "- The Flash 1.Sezon 20.Bölüm" 
    [1]=> 
    string(29) "- The Flash 2.Sezon 1.Bölüm" 
    [3]=> 
    string(29) "- The Flash 2.Sezon 3.Bölüm" 
    [0]=> 
    string(30) "- The Flash 2.Sezon 11.Bölüm" 
    [4]=> 
    string(29) "- The Flash 3.Sezon 3.Bölüm" 
} 

Для массива объектов, которые вы должны использование usort и strnatcmp:

usort($episodes, function($a, $b) { 
    return strnatcmp($a->post_title, $b->post_title); 
}); 
+0

Он дал 500 внутренних ошибок сервера. Только думаю, что я сделал замену asort с natsort. Я снова заменю асорт и исправлена ​​500 проблем. Почему он не работает для меня? Возможно, версия php? –

+0

Какая версия PHP у вас есть? –

+0

В соответствии с документацией он должен быть доступен для PHP 4, PHP 5, PHP 7. Проверьте apache error_log, чтобы узнать, что не так –

Смежные вопросы