3

$var1 = 22; $var2 = 10; echo $var1 = ($var1 < $var2) ? $var1 : $var2; //小さい var echo '
'; echo $var2 = ($var1 > $var2) ? $var1 : $var2; //大きい変数

印刷されると思います10 and 22が、印刷され10 and 10ます。私が間違っていることは何ですか?

ありがとう

更新 ありがとうございます。

    $min = min($var1, $var2); 
    $max = max($var1, $var2);

    $var1 = $min;
    $var2 = $max;
4

7 に答える 7

4

の変数を再割り当てしていますecho

// $var1 is being assigned minimum of 10,22 which is 10.
// after this $var1 and $var2 will both be 10.
echo $var1 = ($var1 < $var2) ? $var1 : $var2; 

あなたがそれを望むもの:

echo ($var1 < $var2) ? $var1 : $var2; // prints min.
echo '<br />';
echo ($var1 > $var2) ? $var1 : $var2; // prints max.

編集:

の2つの値のうち小さい方が常に必要な場合は、次のように$var1実行できます。

if($var1 > $var2) { // if $var1 is larger...swap.
        list($var1,$var2)  = array($var2,$var1);
}
于 2010-04-28T11:17:10.613 に答える
4

@unicornaddict はすでに問題を解決していますが、より簡単にするために、PHP が提供するminおよび関数を使用できます。max

echo min($var1, $var2), '<br/>', max($var1, $var2);
于 2010-04-28T11:19:11.203 に答える
1

最初の比較で$var1を上書きします。したがって、2番目の比較では10>10を比較します。

$var1 = 22;
$var2 = 10;
echo $var1 = (10 < 22) ? 22 : 10; //smaller var -> $var1 now has the value 10
echo '<br />';
echo $var2 = (10 > 10) ? 22 : 10; //greater var -> 10 is not greater than 10, so $var2 gets a value of 10.
于 2010-04-28T11:16:30.820 に答える
1

最初のエコーで$var1に10を割り当てるので、2番目のエコーでは両方とも10になります。

于 2010-04-28T11:17:27.163 に答える
1
echo $var1 = ($var1 < $var2) ? $var1 : $var2; //smaller var

これにより、に10が割り当てられ$var1ます。これで、両方の変数に10が含まれます。では、2行目に何を期待しますか?

于 2010-04-28T11:17:42.160 に答える
1

一時変数が必要です。最小を使用して、

echo min($var1, $var2);
于 2010-04-28T11:18:26.963 に答える
1

あなたの質問には、値の交換についても言及されていますが、他の回答では何のメモもしていないようです。$var1サンプル コードを考えると、2 つの値のうち小さい方と$var2大きい方を含めたいようです。

$var1 = 22;
$var2 = 10;
if ($var1 > $var2) {
    list($var1, $var2) = array($var2, $var1);
}
// $var1 will now be smaller than (or equal to!) $var2
于 2010-04-28T11:35:38.267 に答える