0

以下は、私のコードにあるループです。開始値と終了値がゼロの場合、ループは値ゼロ (0) を出力します。しかし、ここで行う必要があるのは、開始値と終了値がゼロの場合、何も出力しないことです。誰かがアプローチを変更する方法を教えてもらえますか?

while ($recQ = mysqli_fetch_array($runx))
{
   for($ii=$recQ['start']; $ii<=$recQ['end']; $ii++)
    {
        if (!in_array($ii, $exclude))
        {
            echo $ii.", ";
        }
    }
}   
4

3 に答える 3

1

empty()関数を使用して値にチェックを追加します。

while ($recQ = mysqli_fetch_array($runx))
{
   for($ii=$recQ['start']; $ii<=$recQ['end']; $ii++)
    {
        if (!in_array($ii, $exclude))
        {
            if (!empty($ii)) echo $ii.", ";
        }
    }
}   
于 2012-11-27T05:51:09.263 に答える
0

少し異なるアプローチを試すことができます。

$resulting_set = array();

while( $recQ = mysqli_fetch_array($runx) ){

    $my_set = range( $recQ['start'], $recQ['end'] );

    $resulting_set = array_merge( 
        $resulting_set,
        array_diff( $my_set, $exclude )
    );

}

echo implode( ', ', $resulting_set);

コードは少し読みやすく、結果には、バージョンから取得する末尾のコンマとスペースが含まれません(何らかの理由でコードが不要であると想定しています)。

また、出力を含む配列をオンザフライで出力するよりもはるかに簡単に操作できるため、これはリファクタリングも簡単です。

値から0を削除するには、$exclude配列に0を追加するだけです。

于 2012-11-27T06:07:58.490 に答える
0

continue;メインループで使用することにより、内側のループの実行をスキップできます。

while ($recQ = mysqli_fetch_array($runx))
{
   if ($recQ['start'] == 0 && $recQ['end'] == 0) {
       continue; // skip the rest of the code inside this loop
   }
   for($ii=$recQ['start']; $ii<=$recQ['end']; $ii++)
于 2012-11-27T06:00:41.037 に答える