2013-04-07 101 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