PhP Multidimensional Array将索引连接在一起

时间:2012-10-23 19:26:53

标签: php

首先让我说我对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疯狂吗?

提前谢谢!

3 个答案:

答案 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"];