0

「青」、「赤」、「緑」として値が保存されている、ソートされていない動的に変化する配列がphpにあります。配列の残りの部分は、「湿った」、「乾燥した」、「湿った」などの文字列で構成されます。文字列をHTMLページに出力する前に、それぞれのタイトルを出力したいと思います。どうすればこれを達成できますか?

上記のコードでは問題が発生します。else が起動すると、3 色すべてがエコーアウトされる前に見出しが再度出力されるためです。

編集:

配列: 青、湿った、緑、湿った、乾燥した、赤。

echo "<h3>Color</h3><br>";
foreach($array as $value){
if ($value == "blue" || $value == "red" || $value == "green") {
    echo $value;
}
echo "<h3>Weather</h3><br>";
foreach($array as $value){
if ($value != "blue" || $value != "red" || $value != "green") {
    echo $value;
}
4

3 に答える 3

1

はい、ブール式が正しくないためです。そのはず

if($file == 'blue' || $file == 'red' || $file == 'green')

あなたが書いた方法は、次のようになります

if($file == 'blue' || true || true)

そして、論理OR式を使用TRUEすると、変数の 1 つだけが等しい場合、式は になりTRUEます。
編集
2 回目の読み取りでは、ループechoの前の見出し。foreach

于 2012-09-27T13:04:04.500 に答える
0

ifステートメントの構文が間違っています。それはする必要がありますif ($file == "blue" || $file == "red" || $file == "green") {

echo "<h1>Colours</h1>";次のように、foreach ループの前に見出しをエコーし​​ます。

       echo "<h1>Colours</h1>";      
       foreach($file_list as $file) {

      if ($file == "blue" || "red" || "green") {        
         echo $file;
        }
      else { ...}
于 2012-09-27T13:03:55.060 に答える
0

私はそれを自分で手に入れました。2 番目の foreach ループで論理 OR を変更すると、予想どおり気象条件のみが出力されます。

echo "<h3>Color</h3><br>";
foreach($array as $value){
if ($value == "blue" || $value == "red" || $value == "green") {
    echo $value;
}
echo "<h3>Weather</h3><br>";
foreach($array as $value){
if ($value != "blue" && $value != "red" && $value != "green") {
    echo $value;
}
于 2012-09-27T13:27:31.810 に答える