2013-04-04 39 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); 
相关问题