2013-04-07 105 views
0

我有以下SQL查詢:SQL結果PHP數組

$sql = "SELECT lat, lang 
     FROM users"; 

然後我用下面的代碼把數組的結果成兩個陣列,一個用於LAT和一個郎。

$i = 0; 

foreach($results as $row) { 
    $latArray = array(); 
    $langArray = array(); 
    $latArray[$i] = $row['lat']; 
    $langArray[$i] = $row['lang'];   
    $i = ($i + 1); 
} 

但是,似乎只有最後一個傳遞給數組的值被存儲。當我回顯數組的每個值時,我得到以下錯誤:未定義的偏移量:0,我相信這意味着latArray [0]沒有任何值。

我確定我錯過了一些明顯的東西,但爲什麼不是所有的值都複製到新的數組中?

+0

移動 「$ latArray =陣列();」並在此之前排隊。 – Fergus 2013-04-07 18:05:06

+0

http://www.php.net/mysql_fetch_array – user1909426 2013-04-07 18:05:21

回答

3
$i = 0; 
$latArray = array(); //Declare once, do not redeclare in the loop 
$langArray = array(); 
foreach($results as $row) { 
    $latArray[$i] = $row['lat']; 
    $langArray[$i] = $row['lang'];   
    $i = ($i + 1); 
} 
+0

嘎,就像我說的,愚蠢的錯誤。謝謝Jari。 – DJDMorrison 2013-04-07 18:07:27

+0

歡迎您! – vikingmaster 2013-04-07 18:07:56

1

聲明你的陣列循環

$latArray = array(); 
$langArray = array(); 

foreach($results as $row) { 
    $latArray[$i] = $row['lat']; 
    $langArray[$i] = $row['lang'];   
    $i = ($i + 1); 
} 
+0

愚蠢的錯誤,非常感謝! – DJDMorrison 2013-04-07 18:08:33

1

之前,您應該把

$latArray = array(); 
$langArray = array(); 

的foreach循環之前(就像你與你的櫃檯$我做的),「事業的每一個新的價值從$結果它重置thous值..

所以你的代碼將如下所示:

$i = 0; 
$latArray = array(); 
$langArray = array(); 
foreach($results as $row) { 
    $latArray[$i] = $row['lat']; 
    $langArray[$i] = $row['lang'];   
    $i = ($i + 1); 
} 
0

使用FETCH_ASSOC代替:

$latArray = array(); 
     $langArray = array(); 
    while($row = mysql_fetch_assoc($your_query)){ 



    $latArray[$i] = $row['lat']; 
    $langArray[$i] = $row['lang'];   
    $i++; 
} 

如果u使用msqli我們mysqli_fetch_assoc

+0

它不能解決問題。 – TheEwook 2013-04-07 18:08:40

+0

:) true該數組在循環內聲明 – bleuscyther 2013-04-07 18:10:45