2012-10-23 14 views
0

讓我開始說,我是相當新的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瘋狂嗎?

預先感謝您!

回答

2

您不能將數據類型合併到同一個數組值中。

$multiArray[$i]只能有一個值類型(字符串,整數或數組),但在代碼中,您同時需要一個數組和一個字符串!

一個可能的解決方案是(但取決於你的邏輯):

while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){ 
    $multiArray[$i]["lorem_string"] = $row["foo"]; 
    $multiArray[$i]["lorem"] = $row["bar"]; 
    $i++; 
} 
+0

+1與編輯。 –

+1

是的,修復它!非常感謝你! – jpalladino84

0

因爲首先分配$multiArray[$i] = $row["foo"];所以$multiArray[$i]會用一個例子值Hello一個字符串,然後你$multiArray[$i]["lorem"] = $row["bar"];指定字符串的lorem指數。 lorem evaulates到0,所以輸出將已經1ello

編輯:PHP的最新版本應該產生一個警告了。

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