[英]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.