0

コードに if 条件を実装しました。条件は、john が show abc.jpg else xyz.jpg よりも設定されている場合ですが、動作していません。毎回 xyz .jpg 画像が表示されます。私を助けてください。構文が間違っている場合は、どこが間違っているか教えてください。

<?php
if($extra = "John" || "Kevin" || "Cameron" || "Santosh" || "Ali"){ ?>
    <img src="http://yespricer.com/theme/Freshness/images/maria2.png" width="75"/>
<?php }else{ ?>
    <img src="http://yespricer.com/theme/Freshness/images/maria.png" width="75"/>
<?php } ?>
4

6 に答える 6

3

$extra毎回値と等しいかどうかを確認する必要があります。あなたのコードはこれを一度だけ行います。配列内のすべての値をグループ化し、値が含まれているかどうかを確認できます。

$names = array("John", "Kevin", "Cameron", "Santosh", "Ali");
if(in_array($extra, $names)) {
    // $extra is in $names
}
于 2012-11-01T12:00:05.773 に答える
0

より良い効率的な方法は、次を使用することin_array()です。

<?php
if(in_array($extra, array("John", "Kevin", "Cameron", "Santosh", "Ali")){ ?>
    <img src="http://yespricer.com/theme/Freshness/images/maria2.png" width="75"/>
<?php }else{ ?>
    <img src="http://yespricer.com/theme/Freshness/images/maria.png" width="75"/>
<?php } ?>
于 2012-11-01T12:06:39.293 に答える
0

何が起こっているかについてもっと知るにはどうすればよいですか?条件を変数に割り当てます。

$result = $extra = "John" || "Kevin" || "Cameron" || "Santosh" || "Ali";

次に、条件を可視化します。

var_dump($result);

これにより、次のことが得られます。

bool(true)

true条件がブール値( demo )になったことを意味します。なぜこれが起こるのか、あなたは今自問するかもしれません。そのために、条件を個別に選択できます。

"John" || "Kevin" || "Cameron" || "Santosh" || "Ali"

trueこれはPHPでの の表現です。だけで交換できますtrue。次の部分:

$extra = true;

それは簡単だ。true変数に割り当てます$extra。最後の部分:

$result = true;

繰り返しますが、式の結果を に代入すると、 が表示さ$resultれますtrue

$extra代わりに、変数に名前のいずれかが含まれていることを確認したいと思うでしょう。これを適切に行うために、PHP にはいくつかの注意事項があります。まず第一に、あなたの人生を楽にし、チェックしたいすべての名前を配列に入れます:

$names = array("John", "Kevin", "Cameron", "Santosh", "Ali");

次に、その配列にあることを厳密に確認します。$extra

$result = in_array($extra, $names, true);

3 番目のパラメーターがtrueここにあることに注意してください。これは厳密なチェック用です ( in_arrayDocsを参照)。そうでなければ、それが真で$extraあることがわかるかもしれません。次に、結果を処理しますが、変数が必要なだけです。0$result

$image = $result ? 'maria2.png' : 'maria.png';

そして最後に出力を行います:

printf(
    '<img src="http://yespricer.com/theme/Freshness/images/%s" width="75"/>'
    , $image
);

そして、あなたはあなたの問題を解決しました。完全なコード例:

$names  = array("John", "Kevin", "Cameron", "Santosh", "Ali");
$result = in_array($extra, $names, true);
$image  = $result ? 'maria2.png' : 'maria.png';
printf(
    '<img src="http://yespricer.com/theme/Freshness/images/%s" width="75"/>'
    , $image
);

デモ

同様に参照してください:

于 2012-11-01T12:43:36.630 に答える
0

そのはず

if($extra == "John" || $extra == "Kevin" || 
   $extra == "Cameron" || $extra == "Santosh" || 
   $extra == "Ali"){

}

編集

desが示唆するようin_arrayに、このソリューションも使用できます

$names = array("John", "Kevin", "Cameron", "Santosh", "Ali");

echo "<img src='http://yespricer.com/theme/Freshness/images/"
  .(in_array($extra, $names)?'maria1':'maria')
  .".png' width='75'/>";
于 2012-11-01T11:58:03.703 に答える
0

上記の他の人が提案した方法と非常に似ていますが、私の意見では少し整頓されています

<?php
    $name = "";
    if($extra == "John" || $extra =="Kevin" || $extra =="Cameron" || $extra =="Santosh" || $extra == "Ali"){ 
        $name = "maria2.png";
    }else{
        $name = "maria.png";
    }
?>
<img src="http://yespricer.com/theme/Freshness/images/<?php echo $name;?>" width="75" />
于 2012-11-01T12:03:53.590 に答える
0

使えません

if($extra = "John" || "Kevin" || "Cameron" || "Santosh" || "Ali"){

理由

左から右に移動すると、$extra == "John"... わかりました。$extra の値に応じて true または false に評価される可能性があるため、問題ありません。ただし、次のものは次のようになります。

if ("Kevin") {

空でない文字列は true と評価されるため、次のように記述した方がよいでしょう。

if($extra = "John" || true || true || true || true){

論理 OR を使用しているため、$extra が何であるかは問題ではありません。なぜなら、すべての結果が if 条件が TRUE になるからです。

解決策 1 - 乱雑な条件付き

if($extra == "John" || $extra == "Kevin" || $extra == "Cameron" 
|| $extra == "Santosh" || $extra == "Ali"){

解決策 2 - 提案どおり

$names = array("John", "Kevin", "Cameron", "Santosh", "Ali");
if(in_array($extra, $names)) {
    // $extra is in $names
}

解決策 3 - ifs よりもクリーンで、配列よりも高速でありながら柔軟

switch ($extra) {
    case "John":
    case "Kevin":
    case "Cameron":
    case "Santosh":
    case "Ali":
        //code here for TRUE, if any of those names match $extra


        break;
    default:
        //code here for FALSE, if non of the names match $extra



}
于 2012-11-01T12:08:34.880 に答える