Как перебрать массив объектов без foreach и ArrayAccess - PullRequest
1 голос
/ 02 июня 2010

Мне нужно разработать сайт на PHP 5.1.6, и я только что столкнулся с ошибкой на моем сайте, которая не происходит в 5.2+. При использовании foreach () для итерации объекта я получаю следующую ошибку: «Неустранимая ошибка: объекты, используемые в качестве массивов в post / pre increment / decment, должны возвращать значения по ссылке ...»

Кто-нибудь знает, как преобразовать следующий цикл foreach в конструкцию, которая будет работать с 5.1.6? Заранее спасибо!

foreach ($post['commercial_brands'] as $brand)
                    {
                        $comm_food = new Commercial_food_Model;
                        $comm_food->brand = $brand;
                        $comm_food->feeding_type_id = $f_type->id;
                        $comm_food->save();
                    }

Ответы [ 3 ]

1 голос
/ 02 июня 2010

Улучшение ответа Короната:

$max = count($post['commercial_brands']);
for ($i = 0; $i < $max; $i++)
{
    $comm_food = new Commercial_food_Model;
    $comm_food->brand = $post['commercial_brands'][$i];
    $comm_food->feeding_type_id = $f_type->id;
    $comm_food->save();
}

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

1 голос
/ 02 июня 2010
$x = 0;
$length = count($post['commercial_brands']);
while($x < $length){
     $comm_food = new Commercial_food_Model;
     $comm_food->brand = $post['commercial_brands'][$x];
     $comm_food->feeding_type_id = $f_type->id;
     $comm_food->save();
     $x++;
}

// пока 4 эва

0 голосов
/ 02 июня 2010
for ($i = 0; $i < count($post['commercial_brands']); $i++)
{
    $comm_food = new Commercial_food_Model;
    $comm_food->brand = $post['commercial_brands'][$i];
    $comm_food->feeding_type_id = $f_type->id;
    $comm_food->save();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...