2013-04-04 42 views
-1

所以我想創建一個循環裏的數組,這樣我可以在代碼中的其他地方使用它的元素...array_push只返回已被推入新數組的最後一個元素?

所以當我嘗試的var_dump陣列,看看是否所有預期的內容已經添加到陣列中,我只看到了新的數組內數組的最後一個元素..任何人都可以解釋我爲什麼...下面是代碼

$select = "SELECT * FROM DEVICES"; 
$result = mysql_query($select); 
$result_count = mysql_num_rows($result) 

if($result_count > 0) { 
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 

     echo "<td> <a class='inline' href='/profiles.php?id=".$row['ID']."'><img src='".$row['Picture']."'width='50' height='50' class ='image' /></a> <br /> <br /> <div style='color: blue; font-weight:bold; font-size:15px;'> By ".$row['Name']." </td>"; 
     $user_array = array(); 
     if(array_key_exists("Device",$row)){ 
      array_push ($user_array,$row["Device"]); 
     }  
    } 
} 
var_dump($user_array); // only returns the last element inserted into $user_array. 
+0

故障排除這些問題是通過在PHP中使用遠程調試器,例如Xdebug的最舒適:http://xdebug.org/docs/remote – hakre

+0

X-參考同類型的錯誤:HTTP://計算器.com/q/17140454/367456 – hakre

+0

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

回答

4

問題的相關部分是你重置每當while循環的主體執行時數組。

你必須數組初始化循環之外:

$user_array = array(); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 

    echo "<td> <a class='inline' href='/profiles.php?id=".$row['ID']."'><img src='".$row['Picture']."'width='50' height='50' class ='image' /></a> <br /> <br /> <div style='color: blue; font-weight:bold; font-size:15px;'> By ".$row['Name']." </td>"; 

    if(array_key_exists("Device",$row)) { 
     array_push ($user_array,$row["Device"]); 
    }  
} 

var_dump($user_array); 
+0

是的..我忘了..謝謝一羣人! –

0

試試這個,更簡單。

$user_array = array(); 
if (isset($row["Device"]) && !empty($row["Device"])) { 
    $user_array[] = $row["Device"]; 
} 

而且你有乾淨的數據陣列。

print_r($user_array); 
相關問題