我在PHP中遇到数组问题。问题是要在我页面的表中显示一些用户信息,这些用户具有几个属性。我只想显示用户名,后跟4个属性,我数据库中的此属性是布尔类型(true / false)。为了在列表中表示这些值,我使用了复选框,因此每个复选框根据数据库上的值显示为选中还是未选中。我已经通过查询获得了这些值。我在视图(页面)上显示时遇到问题。
为了检查该属性是true还是false,我使用了两个foreach循环。我使用第一个为每个用户传递,第二个使用为每个用户评估4个属性。我还预置了一个数组,该数组负责存储该属性为true或false。因此,如果属性为true,则数组上的“已选择”索引将为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,Category ...已经包含从数据库获取的值。
在每个用户的末尾,我将当前的$ properties数组添加到另一个数组$ finalChoices中,以便再次检查下一个用户,依此类推。
当我打印$ finalChoices数组以查看其内容时,问题就来了,我看到它为每个用户包含一个具有其属性的数组,但是每个用户每个数组的最后一个索引包含与所有数组完全相同的值。 明白我的意思:
数组的第一个位置:
数组的第二个位置:
数组的第三个和最后一个位置:
如您所见,数组中所有位于最后位置的元素具有与最后位置数组相同的值。因此,他们没有表现出真正的价值。例如,根据我的数据库,第一个数组和第二个数组应该在其最后一个位置“选择”,因为它们在CategoryD中为“ true”。
我在PHP中是一个新手,我不确定自己做错了什么。当然,我的逻辑上可能缺少某些东西,可能会使我遇到此错误。如果您能帮助我,我将不胜感激!
我也想为我的英语道歉,我不是母语人士,而且还在不断提高。谢谢。
最后,我想添加一张图片,以查看其外观: View