Php küçük bir değer ve takas değerlerini bulma

7 Cevap php
    $var1 = 22;
    $var2 = 10;
    echo $var1 = ($var1 < $var2) ? $var1 : $var2; //smaller var
    echo '<br />';
    echo $var2 = ($var1 > $var2) ? $var1 : $var2; //greater var

Ben 10 and 22 yazdırmak için bekliyoruz ama 10 and 10 yazdırır. Ben yanlış ne yapıyorum herhangi bir fikir?

Teşekkürler

UPDATE Teşekkürler all.

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

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

7 Cevap

Sen echo değişkenleri yeniden atama.

// $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; 

Istediğiniz ne:

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

EDIT:

Eğer her zaman iki değerden daha küçük istiyorsanız $var1 bunu yapabilirsiniz:

if($var1 > $var2) { // if $var1 is larger...swap.
        list($var1,$var2)  = array($var2,$var1);
}

İlk karşılaştırıldığında $ var1 üzerine. Yani ikinci karşılaştırılması 10> 10 karşılaştırır.

$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.

her ikisi de 10 olan saniyede böylece, ilk echo ile $ var1 için 10 atayın.

echo $var1 = ($var1 < $var2) ? $var1 : $var2; //smaller var

Bu $var1 için 10 atar. Şimdi her iki değişkenler 10 içerir. Yani ikinci satırın ne bekliyorsunuz?

Siz geçici bir değişken gerekir. Sadece min kullanın

echo min($var1, $var2);

Sizin soru da diğer cevaplar herhangi bir not yapmak için görünmüyor değerleri takas bahseder. Eğer $var1 iki değerden küçük içeren ve $var2 daha büyük gibi istediğiniz örnek kod verilen görünüyor.

$var1 = 22;
$var2 = 10;
if ($var1 > $var2) {
    list($var1, $var2) = array($var2, $var1);
}
// $var1 will now be smaller than (or equal to!) $var2