Laravel应用程序上字符串索引引用的PHP数组存在问题

Laravel应用程序上字符串索引引用的PHP数组存在问题,php,arrays,string,laravel,eloquent,Php,Arrays,String,Laravel,Eloquent,我对PHP中的数组有问题。问题是,要在我的页面上的表中显示一些用户信息,这些用户有几个属性。我只想显示用户名,后跟4个属性,数据库中的这些属性是布尔类型(true/false)。为了在列表中表示这些值,我使用了复选框,因此每个复选框根据数据库中的值显示为选中或未选中。我已经通过查询得到了这些值。我只是在我的视图(第页)的显示上有问题 为了检查属性是真是假,我使用了两个foreach循环。我使用第一个来为每个用户传递,第二个用来评估每个用户的4个属性。我还预设了一个数组,该数组负责存储该属性是否为

我对PHP中的数组有问题。问题是,要在我的页面上的表中显示一些用户信息,这些用户有几个属性。我只想显示用户名,后跟4个属性,数据库中的这些属性是布尔类型(true/false)。为了在列表中表示这些值,我使用了复选框,因此每个复选框根据数据库中的值显示为选中或未选中。我已经通过查询得到了这些值。我只是在我的视图(第页)的显示上有问题

为了检查属性是真是假,我使用了两个foreach循环。我使用第一个来为每个用户传递,第二个用来评估每个用户的4个属性。我还预设了一个数组,该数组负责存储该属性是否为true。因此,如果属性为true,那么数组上的索引“selected”将为true

阵列结构为:

$choiceProperty['text'] // This already contains the four possible     properties.
$choiceProperty['selected'] // This is going to store true if the property is true.
$choiceProperty['user_id'] // This is going to store the id of the user.
这是我的代码:

foreach ($user as $key => $userIndiv) {

        foreach ($properties as &$choiceProperty) {

            unset($choiceProperty['selected']);

            if ($choiceProperty['text'] == 'A' && $userIndiv->CategoryA) {
                $choiceProperty['selected'] = true;
            }
            if ($choiceProperty['text'] == 'B' && $userIndiv->CategoryB) {
                $choiceProperty['selected'] = true;
            }
            if ($choiceProperty['text'] == 'C' && $userIndiv->CategoryC) {
                $choiceProperty['selected'] = true;
            }
            if ($choiceProperty['text'] == 'D' && $userIndiv->CategoryD) {
                $choiceProperty['selected'] = true;
            }
            $choiceProperty['user_id'] = $userIndiv->id;
        }

        array_push($finalChoices, $properties); 

    }
如您所见,$userIndiv->CategoryA、CategoryB、CategoryC。。。已包含从数据库获得的值

在每个用户的末尾,我将当前的$properties数组添加到另一个数组$finalChoices,以便再次检查下一个用户,依此类推

当我打印$finalChoices数组以查看其内容时,问题就出现了,我看到它包含每个用户的一个数组及其属性,但每个用户的每个数组的最后一个索引包含所有数组的完全相同的值。 明白我的意思了吧:

阵列的第一个位置:

阵列的第二个位置:

阵列的第三个也是最后一个位置:

正如您所看到的,位于其最后位置的数组的所有元素都具有与最后位置数组相同的值。所以他们没有表现出真正的价值。例如,根据我的数据库,第一个和第二个数组应该在其最后位置“选择”,因为它们在CategoryD中具有“true”

我是PHP新手,不知道自己做错了什么。当然,这可能是我的逻辑中缺少的东西,可能使我有这个错误。如果你能帮助我,我将不胜感激

我还想为我的英语道歉,我不是以英语为母语的人,我的英语还在提高。多谢各位

要完成此操作,我想添加一张图片,展示我的视图中的情况:

这可能会对您有所帮助,非常感谢Zane,通过该链接,我可以访问PHP官方作者的另一个链接,通过他的解释,我可以解决我的问题。解释如下:所以我所要做的不是在第二个foreach循环之前取消设置$choiceProperty数组,而是取消设置$Property。非常感谢。