如何在没有foreach和ArrayAccess的情况下迭代对象数组

时间:2010-06-02 14:47:41

标签: php foreach

我不得不在PHP 5.1.6上开发一个网站,我刚刚在我的网站上发现了一个在5.2+上没有发生的错误。当使用foreach()迭代一个对象时,我得到以下错误:“致命错误:在post / pre递增/递减中用作数组的对象必须通过引用返回值...”

有谁知道如何将以下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 个答案:

答案 0 :(得分:1)

改进Coronatus的答案:

$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 :(得分:1)

$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 eva

答案 2 :(得分:0)

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();
}
相关问题