在php中查找较小的值并交换值

发布于 2024-08-30 13:26:36 字数 431 浏览 5 评论 0原文

$var1 = 22; $var2 = 10; 回声 $var1 = ($var1 < $var2) ? $var1 : $var2; //较小的变量 回显'
'; 回声 $var2 = ($var1 > $var2) ? $var1 : $var2; //greater var

我希望它打印 10 和 22 但它打印 10 和 10。有什么想法我做错了吗?

谢谢

更新 谢谢大家。

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

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

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

I expect it to print 10 and 22 but it prints 10 and 10. any ideas what I am doing wrong?

Thanks

UPDATE
Thanks all.

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

独孤求败 2024-09-06 13:26:36

@unicornaddict 已经解决了您的问题,但为了使其更简单,您可以使用 min PHP 提供的 max 函数。

echo min($var1, $var2), '<br/>', max($var1, $var2);

@unicornaddict already solved your problem, but to make it simpler you can use the min and max functions PHP provides.

echo min($var1, $var2), '<br/>', max($var1, $var2);
甜心小果奶 2024-09-06 13:26:36

您正在重新分配 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);
}

You are re-assigning the variables in the 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; 

What you want it:

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

EDIT:

If you always want the smaller of the two values in $var1 you can do:

if($var1 > $var2) { // if $var1 is larger...swap.
        list($var1,$var2)  = array($var2,$var1);
}
谎言 2024-09-06 13:26:36

您在第一次比较中覆盖 $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.

You overwrite $var1 in your first comparison. So the second comparison compares 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.
若能看破又如何 2024-09-06 13:26:36

你在第一个 echo 中将 10 分配给 $var1 ,所以在第二个 echo 中它们都是 10 。

you assign 10 to $var1 with the first echo, so at the second they are both 10.

苦笑流年记忆 2024-09-06 13:26:36
echo $var1 = ($var1 < $var2) ? $var1 : $var2; //smaller var

这会将 10 分配给 $var1。现在两个变量都包含 10。那么您对第二行有何期望?

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

This assigns 10 to $var1. Now both variables contain 10. So what do you expect of the second line?

陌路终见情 2024-09-06 13:26:36

你需要一个临时变量。只需使用分钟,

echo min($var1, $var2);

You need a temporary variable. Just use min,

echo min($var1, $var2);
っ左 2024-09-06 13:26:36

您的问题还提到交换值,其他答案似乎没有注意到这一点。鉴于您的示例代码,您似乎希望 $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

Your question also mentions swapping the values, which the other answers don't seem to make any note of. Given your example code it looks like you want $var1 to contain the smaller of the two values and $var2 the bigger.

$var1 = 22;
$var2 = 10;
if ($var1 > $var2) {
    list($var1, $var2) = array($var2, $var1);
}
// $var1 will now be smaller than (or equal to!) $var2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文