$ var1 = 22;
$ var2 = 10;
echo $ var1 =($ var1< $ var2)? $ var1:$ var2; //较小的变种
echo'
';
echo $ var2 =($ var1> $ var2)? $ var1:$ var2; //更大的var
我希望它能打印10 and 22
,但会打印10 and 10
。任何想法我做错了什么?
由于
更新 谢谢大家。
$min = min($var1, $var2);
$max = max($var1, $var2);
$var1 = $min;
$var2 = $max;
答案 0 :(得分: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.
修改强>
如果你总是希望$var1
中的两个值中较小的一个,你可以这样做:
if($var1 > $var2) { // if $var1 is larger...swap.
list($var1,$var2) = array($var2,$var1);
}
答案 1 :(得分:4)
@unicornaddict已经解决了你的问题,但为了简化你可以使用PHP提供的min
和max
函数。
echo min($var1, $var2), '<br/>', max($var1, $var2);
答案 2 :(得分:1)
在第一次比较中覆盖$ var1。因此第二次比较比较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.
答案 3 :(得分:1)
你用第一个回声给$ var1分配10,所以在第二回合它们都是10。
答案 4 :(得分:1)
echo $var1 = ($var1 < $var2) ? $var1 : $var2; //smaller var
这会将10分配给$var1
。现在两个变量都包含10.那么您对第二行的期望是什么?
答案 5 :(得分:1)
您需要一个临时变量。只需使用min,
echo min($var1, $var2);
答案 6 :(得分:1)
你的问题还提到交换价值,其他答案似乎没有记录。根据您的示例代码,您希望$var1
包含较小的两个值,$var2
包含较大的值。
$var1 = 22;
$var2 = 10;
if ($var1 > $var2) {
list($var1, $var2) = array($var2, $var1);
}
// $var1 will now be smaller than (or equal to!) $var2