[英]PhP Multidimensional Array concating indexes together
让我先说我对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疯狂吗?
先感谢您!
您无法在同一数组值中组合数据类型。
$multiArray[$i]
只能有一个值类型,(字符串,整数或数组),但在你的代码中,你需要一个数组和一个字符串!
一个可能的解决方案是(但取决于您的逻辑):
while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){
$multiArray[$i]["lorem_string"] = $row["foo"];
$multiArray[$i]["lorem"] = $row["bar"];
$i++;
}
因为首先你分配$multiArray[$i] = $row["foo"];
所以$multiArray[$i]
将是一个带有示例值Hello
的字符串,然后用$multiArray[$i]["lorem"] = $row["bar"];
分配字符串的lorem
索引$multiArray[$i]["lorem"] = $row["bar"];
。 lorem
评估为0
,因此输出将为1ello
编辑 :PHP的新版本也应该产生警告。
你基本上首先为$ 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"];
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.