2013-04-03 2 views
0

У меня очень сложное условие, и я просто не могу придумать логику, которая отлично работает. Вот что мне нужно сделать: Я получаю 10 статей через API, и мне нужно отобразить их в правильном порядке. Проблема в том, что иногда статьи автоматически меняют свой порядок. То, что мне нужно сделать, неважно, изменили ли они свой порядок, или нет, порядок на моей странице остается статичным. , например, если массив ('Itema', 'itemB', 'itemC', 'itemD') становится массив ('itemC', 'Itema', 'itemB', 'itemD')Добавить в личный список массив

Я до сих пор хочу показать в оригинальном порядке, который будет itemA, B, C и D.

Я попытался использовать функцию in_array(), чтобы проверить, есть ли статья, но она, похоже, не работает правильно.

Посмотрите:

$post_array = array(); 
    foreach ($Info AS $key => $post_array){ 
     if (!in_array($Info[$key]->postId, $post_array)){ 
      array_unshift($post_array, $Info[$key]); 
      echo '<h2>Added</h2>' ; 
     }else { 
     echo '<h2>not Added</h2>' ; 
     } 
    } 

Он всегда показывают добавил, каждый раз, когда я бегу это плюс предупреждение о том,

Предупреждение: array_unshift() ожидает параметр 1, чтобы быть массиву

Предупреждение: in_array() ожидает, что параметр 2 будет массивом

То, что я точно хочу сделать, - сначала добавить все 10 статей в $ post_array, а затем добавить только новую/уникальную статью в $ post_array в начале. И отобразите 10 элементов из $ post_array.

Кроме того, я не думаю, что смог бы достичь того, чего хочу от этого.

Прошу совета.

+1

in_array ожидает массив, также делает un_shift. Помещение foreach в массив 1Dimension делает его строкой. Не массив –

ответ

1

Кажется довольно лишними:

if (!in_array($Info[$key]->postId, $post_array)){ 

в точке запуска этого, $ post_array уже имеет то же значение $ Info [$ Key], потому что ваш Еогеасп является:

foreach ($Info AS $key => $post_array){ 

Предполагая эти $ Info [ключ] $ значения суб-массивы, то ваш in_array вызов в обратном направлении, синтаксис

in_array($array, $value_to_find) 

но вы делаете

in_array($value_to_find, $array); 
+0

да, смысл. Но я не могу понять иначе. Я не прошу о точном ответе, но просто укажу мне в правильном направлении. Пожалуйста. –

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