array_push只返回已推入新数组的最后一个元素?

时间:2013-04-04 04:21:36

标签: php

所以我试图在循环中创建一个数组,以便我可以在代码中的其他地方使用它的元素......

所以当我尝试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.

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

试试这个,更简单。

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

你有干净的数组数据。

print_r($user_array);