【问题标题】:phalcon - loop through results and change valuesphalcon - 遍历结果并更改值
【发布时间】:2014-05-10 20:15:06
【问题描述】:

我想遍历所有设置类别,并根据结果设置变量。 所以这样我可以将更新的数组/对象传递给视图并循环遍历它。 但是我收到了这个错误:

Fatal error: An iterator cannot be used with foreach by reference in  /app/controllers/SettingsController.php on line 9

我的代码:

<?php
class SettingsController extends ControllerBase
{
    public function indexAction()
    {
        $this->tag->prependTitle("settings");
        $settingCategories = SettingCategory::find();
        $this->view->setVar("settingCategories",$settingCategories);
        foreach($settingCategories as &$settingCaterogy){
            if($settingCaterogy->type == "2"){
                $settingCategory->intersection = "deze mag niet";
            }else{
                $settingCategory->intersection = "deze mag";
            }
        }
        $this->view->disable();
        var_dump($settingCategories);
    }
}

当我删除 & 时,键不会被定义或编辑

【问题讨论】:

    标签: php iterator phalcon


    【解决方案1】:

    我假设您的设置类别是一个对象,这意味着它始终作为参考传递。在这种情况下,您不需要在每个语句中都使用 &,您也发现了这一点。

    foreach($settingCategories as $settingCaterogy){
        // …
    }
    

    【讨论】:

      【解决方案2】:

      从循环迭代器中删除 &:

      foreach($settingCategories as &$settingCaterogy){
      

      foreach($settingCategories as $settingCaterogy){
      

      【讨论】:

        【解决方案3】:

        Bytchek 和 Teknotica 提供的答案是正确的,可以帮助您避免错误。但是,据我所知,phalcon 结果集对象是只读的,因此您设置的值不会保留。一种解决方法是将 $settingCategories 对象转换为常规数组,然后循环遍历它(通过引用:

        $rw = $settingCategories->toArray();
        foreach($rw as &$settingCategory){
            if($settingCaterogy["type"] == "2"){
                $settingCategory["intersection"] = "deze mag niet";
            } else {
                $settingCategory->["intersection"] = "deze mag";
            }
        }     
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-06-15
          • 2019-07-25
          • 2019-07-20
          • 2011-01-16
          • 1970-01-01
          • 2022-01-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多