簡體   English   中英

PhP多維數組將索引連接在一起

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM