当前位置: 首页 > 知识库问答 >
问题:

Foreach循环似乎破坏了Laravel/PHP7中的数组

子车劲
2023-03-14

我有一个简单的积垢项目称为过滤器。在这里,每个过滤器都被分配给一个带有外键的类别。我试图做的是循环遍历每个foregin键,以获得类别名称,而不是显示给用户的id。

我首先获取所有过滤器,并执行模具/转储以检查所有结果是否存在。

尝试将类别名称分配给正确的数组项时,出现以下错误:

msgstr"间接修改App\Filter的重载元素没有效果"

所以为了检查发生了什么,我在foreach循环中死了/转储了,完全相同的数据现在消失了。即使我只是在没有修改原始数组的情况下放入一个foreach循环,当我将其传递回视图时,它已经被取消设置。

我是不是太天真了,没有意识到这个foreach循环会破坏这些数据???

我已经复制了下面的代码,并评论了dd工作和不工作的地方;

public function show()
{   
    $filter = [];
    $filter['filters'] = Filter::all();

    //dd($filter['filters']); --this works fine here
    foreach($filter['filters'] AS $key => $filter){
    //dd($filter['filters']); --this returns null here
        $category = Category::where('id', $filter->category)->first();
        $filter['filters'][$key]->category = $category->category;
    }

    return view('admin.crud.filters.index')->with('filter', $filter);
}

共有1个答案

卢皓轩
2023-03-14

不要用相同的名称重新初始化变量或不同的数据类型

尝试将$过滤器更改为Foreach循环中的其他内容。因为您已经有了一个同名的数组。

做一些类似的事情:

foreach($filter['filters'] AS $key => $f){...}
 类似资料:
  • 我正试图使Filepond工作,但CSS中的这一行似乎破坏了它-在ul选择器中。 我试着对页面的整个部分进行核化,直到Filepond起作用,将目标锁定在css上,最后在ul{}中找到前面提到的行。我可以把其他的东西都抹掉,只留下那条线,而文件孔仍然坏了,所以我肯定这是问题所在,但我不知道是怎么回事。 我尝试使用Chrome的检查器功能查看运行时页面源代码,但在那里找不到溢出。 然后我使用Note

  • 我的单元测试设置如下: 进口似乎是个问题,因为我试图使用桶: 在index.ts文件中,我正在执行以下操作:

  • 从Laravel的foreach循环获取错误消息: 我的foreach循环是: 我的控制器是:

  • 问题内容: 我觉得这里缺少明显的东西! 输出: 当然应该输出: 这是怎么了 问题答案: 字典未排序。如果需要依赖顺序,则需要一个OrderedDict- Python 2.7的模块中有一个,或者您可以使用多种食谱之一。

  • 问题内容: 我正在尝试使用for循环在数组内创建一个数组-这是我的代码: 不幸的是,这给了我一个 “解析错误:语法错误,意外的T_CONSTANT_ENCAPSED_STRING,预期为’)’” 对于该行: 对于出了什么问题,我有些茫然-非常感谢您的帮助。$ clients是在其他地方定义的,所以这不是问题。 问题答案: 那是无效的语法。您必须首先构建数组的“父”部分。然后使用foreach循环添

  • 问题内容: 我想使用两个数组生成一个,一个包含国家/地区代码,另一个包含国家/地区名称。 这是一个例子: 这种方法对我不起作用。有什么建议么? 问题答案: 那是无效的。 您可能想要这样的东西… 另外,使代码成为数组的键会容易得多…