Php индекс элемента в массиве, элемент обновления - PullRequest
0 голосов
/ 23 декабря 2011

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

по какой-то причине, даже после того, как я добавляю такой элемент 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;
    }

1 Ответ

1 голос
/ 23 декабря 2011

Это похоже на проблему плохой корректуры (примечание $ tempDom против $ tempDon ):

                $tempDom = $don;

                $tempDon->count = 1;

                array_push($groups, $tempDon);

Ваш блок else имеет похожие проблемы.

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

РЕДАКТИРОВАТЬ

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...