0

データベースからデータを取得して配列に入れる while ループを PHP で作成しようとしています。このwhileループは、配列の塗りつぶしに特定の値が含まれるまでのみ機能する必要があります。

ループがまだビジーである間に配列をスキャンして値を探す方法はありますか?

率直に言って;

$array = array();
$sql = mysql_query("SELECT * FROM table");

while($row = mysql_fetch_array($sql)){

    //Do stuff

    //add it to the array

    while($array !=) //<-- I need to check the array here
}
4

3 に答える 3

1

in_array関数とステートメントを使用breakして、値が配列内にあるかどうかを確認し、ループを停止できます。

于 2013-07-31T13:42:38.647 に答える
1

配列に値が挿入されたときに、それぞれの値をチェックしてみませんか? チェックするたびに配列全体を反復するよりもはるかに効率的です。

$array = array();
$stopValue = ...
$sql = mysql_query("SELECT * FROM table");

while($row = mysql_fetch_assoc($sql)){


    array_push($array,$row['column']);
    if($row['column'] == $stopValue){
          // The array now contains the stop value
          break;

}
于 2013-07-31T13:48:28.830 に答える
1

まず、配列自体をチェックするのではなく、配列に何を入れているかをチェックする方が簡単だと思います。いっぱいになった配列が大きくなるにつれて、検索にかかる時間がどんどん長くなります。次のことを考慮してください。

$array = array_merge($array, $row);
if (in_array('ThisisWhatIneed', $row)
{
    break;//leaves the while-loop
}

ただし、クエリがより多くのデータを返す場合は、必要なものを返すように変更することを検討し、処理する必要があるデータのみを処理します。そうしないと、次のようなコードになってしまう可能性があります。

$stmt = $db->query('SELECT * FROM tbl');
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    if ($row['dataField'] === 'username')
    {
        $user = $row;
        break;
    }
}

WHEREここで大いに役立つと思いませんか?のように、より効率的なMySQL 固有のSELECT構文を利用することもできます。 また、上記のコードが ではなく PDO を使用していることに気付いたかもしれません。なんで?拡張機能非推奨であり、今後使用すべきではないという理由だけで、すべての mysql* ページで赤い警告ボックスが示す内容を読んでください。色を加えたり、物事を活気づけたりするためだけにあるのではありません。それらは本物の警告です。SELECT fields, you, need FROM table
mysql_*mysql_*

于 2013-07-31T13:46:42.627 に答える