首先让我说我对php很新。我正在尝试创建一个多维数组,但在查看结果时会遇到一个奇怪的结果。我有一种感觉,我使用的语法不正确,但不能在任何地方验证。所以我在这里提出这个问题。
以下是我要做的事情的要点:
// Given: $row["foo"] == "Hello" && $row["bar"] == 1
while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){
$multiArray[$i] = $row["foo"];
$multiArray[$i]["lorem"] = $row["bar"];
$i++;
}
当我打印$multiArray[$i]
时,我得到:1ello
。
正如我所说,我相信错误在于我如何分配这个多维数组的语法。有人可以帮我找一个类似的方法(我只能猜到)上面的php疯狂吗?
提前谢谢!
答案 0 :(得分:2)
您无法在同一数组值中组合数据类型。
$multiArray[$i]
只能有一个值类型,(字符串,整数或数组),但在你的代码中,你需要一个数组和一个字符串!
可能的解决方案是(但取决于您的逻辑):
while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){
$multiArray[$i]["lorem_string"] = $row["foo"];
$multiArray[$i]["lorem"] = $row["bar"];
$i++;
}
答案 1 :(得分:0)
首先,您指定$multiArray[$i] = $row["foo"];
,因此$multiArray[$i]
将是一个带有示例值Hello
的字符串,然后您将字符串的lorem
索引指定为$multiArray[$i]["lorem"] = $row["bar"];
。 lorem
评估为0
,因此输出将为1ello
编辑:新版本的PHP也会产生警告。
答案 2 :(得分:0)
你基本上是首先为$ multiArray [$ i]分配一个字符串“hello”,然后尝试在下一行为它分配一个数组。
相反,你需要第一个赋值为一个数组,然后可以包含字符串或整数或更多数组或其他
此外,在这种情况下明确做事也有助于您了解正在发生的事情。
例如:
$i = 0; // explicit initialization of $i
while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){
$multiArray[$i] = array(); // explicit initialization of array
$multiArray[$i]["foo"] = $row["foo"];
$multiArray[$i]["lorem"] = $row["bar"];
$i++;
}
然后,如果你想要“你好”echo $multiArray[$i]["foo"];
,如果你想要1 echo $multiArray[$i]["lorem"];
。