-1

私がやりたいことはややユニークで、オンラインで私を導くものを見つけることができないので、うまく説明できるといいのですが。

問題:

私はPHPで一連のifステートメントを持っています。簡単にするために、各ifステートメントは次のようになります。

if($product_name == 'shoe') {
     $shoe_description = '<p>Shoe description</p>';
     echo $shoe_description;
}
else if($product_name == 'car') {
     $car_description = '<p>Car description</p>';
     echo $car_description;
}
else if($product_name == 'bottle') {
     $bottle_description = '<p>Bottle description</p>';
     echo $bottle_description;
}

$product_nameこれは、変数の 1 つとして定義されている限り、正常に機能します。私がやりたいことは、最後のステートメントとして、「私の変数のどれにも一致しない場合product_name、上からランダムな説明を表示する」と言うことです。したがって、上記のコードの最後に最後のステートメントを追加しelseます (例 - 動作しないコード):

else {
     // Show one of the echo strings from above (i.e. $car_description)
     //but pick randomly
}

質問:

最後のelseステートメントが3つのdescription変数の1つを選択echoしてページに表示できるようにするには、どのコードを編集/追加する必要がありますか?

4

8 に答える 8

8

これは、あなたが与えたロジックのかなり基本的な書き直しです。通常は、目的に応じて、一連の if ステートメントをより単純なロジックまたは switch ステートメントに書き直すことができます。この場合、$product_name説明があるかどうかを確認し、そうでない場合はランダムなキーを選択します。

$product_name = $_SESSION['product_name'];

$descriptions = array(
    'shoe' => '<p>Shoe description</p>',
    'car' => '<p>Car description</p>',
    'bottle' => '<p>Bottle description</p>',
);

if(isset($product_name) && isset($descriptions[$product_name])) {
    echo $descriptions[$product_name];
} else {
    echo $descriptions[array_rand($descriptions)];
}
于 2012-08-02T14:36:20.390 に答える
2
$descriptions = array(
    'shoe' => '<p>Shoe description</p>',
    'car' => '<p>Car description</p>',
    'bottle' => '<p>Bottle description</p>'
);

if(isset($product_name) && isset($descriptions[$product_name])){
    echo $descriptions[$product_name];
} else {
    echo $descriptions[array_rand($descriptions)];
}
于 2012-08-02T14:35:25.167 に答える
1

製品と説明をキーと値のペアの配列に入れるのが最も簡単だと思います。

そうすれば、if ステートメントを短縮し、else説明を 2 回定義することなく、(ランダム インデックスを生成することによって) ランダムに選択することができます。

- 編集 -

Robert K/Alexander Larikov が私を打ち負かしました :) サンプル コードについては、彼らのコードを参照してください。

于 2012-08-02T14:36:56.550 に答える
0

これを試して:

<?php
//$product_name = ...
$list = array('shoe' => 'Shoe description', 'car' => 'Car description', 'bottle' => 'Bottle description');
echo '<p>';
if (isset($list[$product_name])) {
   echo $list[$product_name];
} else {
   echo $list[array_rand($list)];
}
echo '</p>';
?>
于 2012-08-02T14:38:56.540 に答える
0

私はこのようにします

if(!$product_name){
      $options = array('shoe','car','bottle');
      $product_name = array_rand($options);
}
//your code here.
于 2012-08-02T14:34:36.343 に答える
-1

すべてのボトルの説明を配列に入れるだけで、最後にヒットした場合elseは、配列からランダムな値を取得するだけです

$descriptions   = array(
    'shoe'      => 'Shoe description',
    'car'       => 'Car description',
    'bottle'    => 'Bottle description'
);

if($product_name = 'shoe') {
     $shoe_description = '<p>'.$descriptions[$product_name].'</p>';
     echo $shoe_description;
}
else if($product_name = 'car') {
     $car_description = '<p>'.$descriptions[$product_name].'</p>';
     echo $car_description;
}
else if($product_name = 'bottle') {
     $bottle_description = '<p>'.$descriptions[$product_name].'</p>';
     echo $bottle_description;
}
else {
    echo '<p>'.$descriptions[array_rand($descriptions)].'</p>';
}
于 2012-08-02T14:35:33.117 に答える
-3

次のことができると思います。

$product_names = array('shoe', 'car', 'bottle');
if (!in_array($product_name, $product_names))
    $product_name = $product_names[rand(0,2)];

そして、コードを追加します。

于 2012-08-02T14:34:00.650 に答える
-4

これには switch ステートメントを使用します。

$strings = array('<p>Shoe description</p>', '<p>Car description</p>', '<p>Bottle description</p>');

switch($product_name)
{
case "shoe":
echo $strings[0];
break;

case "car":
echo $strings[1];
break;

case "bottle":
echo $strings[2];
break;

default:
echo $strings[rand(0,2)];
break;
}
于 2012-08-02T14:34:43.153 に答える