2011-12-23 5 views
-2

по какой-то причине $post всегда < 0. Функция indoxOf отлично работает. Я использую его на Отер кодов и он прекрасно работаетPhp индекс элемента в массиве, элемент обновления

по какой-то причине, даже после того, как я добавить элемент, как этот array_push($groups, $tempDon); на следующем цикле я продолжаю возвращать -1

$donations = $this->getInstitutionDonations($post->ID); 

      $groups=array(); 

      foreach($donations as $don) : setup_postdata($don); 

       $pos = $this->indexOf($don, $groups); 

       print_r($pos); 

       if($pos < 0) 
       { 
        $tempDom = $don; 

        $tempDon->count = 1; 

        array_push($groups, $tempDon); 
       } 
       else 
       { 
        $tempDom = $groups[$pos]; 

        $tempDon->count++; 

        array_splice($tempDon); 

        array_push($groups, $tempDon); 

        echo '<br><br><br>ahhhhhhhhhh<br><br>'; 
       } 
      endforeach; 

    protected function indexOf($needle, $haystack) {   // conversion of JavaScripts most awesome 
     for ($i=0;$i<count($haystack);$i++) {   // indexOf function. Searches an array for 
       if ($haystack[$i] == $needle) {  // a value and returns the index of the *first* 
         return $i;     // occurance 
       } 
     } 
     return -1; 
    } 
+0

Ну, может быть, потому, что вы никогда не меняете значение '$ pos'? – Ryan

+0

Пожалуйста, не смешивайте стандартный и альтернативный синтаксис для if/foreach и т. Д. Избыточность вашего кода будет увеличиваться. Кроме того, определение 'indexOf' неизвестно (вам нужно добавить код) и что такое' $ don'? – hakre

+0

-1 ??? и я меняю '$ pos = $ this-> indexOf ($ don, $ groups);' поэтому в следующий раз цикл acour 'groups' будет иметь один элемент, и я заставляю элемент быть тем же ... Все еще не получилось, почему -1 это не справедливо. – ShadowG

ответ

1

Это выглядит как вопрос о бедных вычитка мне (обратите внимание $ tempDom против $ tempDon):

   $tempDom = $don; 

       $tempDon->count = 1; 

       array_push($groups, $tempDon); 

Ваш else блок имеет аналогичные проблемы.

Я также полностью согласен с комментарием @ hakre относительно несоответствий синтаксиса.

EDIT

Я также хотел бы рекомендовать вам использовать PHP встроенный в array_search функции в теле вашего indexOf метода, а не прокатке самостоятельно.

+0

Я тоже согласен .. но я не программист php, просто пытаюсь исправить некоторые проблемы на коде ... :(Кстати, я исправил проблемы с корректурой, но ничего не изменилось. Все равно не вдаваясь в другое. – ShadowG

+0

Просто потому, что вы не попадаете в блок 'else', это не значит, что есть Похоже, вы попадете только в блок 'else', если' $ don' уже существует в массиве '$ groups', что указывает на дубликат некоторого вида. Если у вас нет дубликатов в' $ пожертвования', вы не достигнет блока 'else'. –

+0

вы правы. У меня не было дублированных элементов, даже жестких, хотя у меня было. thkx много. m, используя 'array_sarch()' тоже. TKX! – ShadowG

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