-1

そのため、コード内の他の場所でその要素を使用できるように、ループ内に配列を作成しようとしています...

したがって、配列を 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.
4

2 に答える 2

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);
于 2013-04-04T04:24:22.517 に答える
0

これを試してみてください。もっと簡単です。

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

データを含むクリーンな配列があります。

print_r($user_array);
于 2013-04-04T04:25:07.090 に答える