相关疑难解决方法(0)

Reference — What does this symbol mean in PHP?

What is this?

This is a collection of questions that come up every now and then about syntax in PHP. This is also a Community Wiki, so everyone is invited to participate in maintaining this list.

Why is this?

It used to be hard to find questions about operators and other syntax tokens.¹
The main idea is to have links to existing questions on Stack Overflow, so it's easier for us to reference them, not to copy over content from …

php arguments symbols operators

4314
推荐指数
21
解决办法
63万
查看次数

对于IEEE754 NaN值,所有比较返回false的理由是什么?

为什么NaN值的比较与所有其他值的行为不同?也就是说,与运算符==,<=,> =,<,>的所有比较(其中一个或两个值为NaN)返回false,这与所有其他值的行为相反.

我想这可以通过某种方式简化数值计算,但我找不到明确说明的理由,甚至在Kahan 的IEEE 754状态讲义中也没有详细讨论其他设计决策.

这种异常行为在进行简单数据处理时会造成麻烦.例如,当在C程序中对某些实值字段的记录列表进行排序时,我需要编写额外的代码来处理NaN作为最大元素,否则排序算法可能会变得混乱.

编辑: 迄今为止的答案都认为比较NaNs毫无意义.

我同意,但这并不意味着正确的答案是错误的,而是一个非布尔值(NaB),幸运的是它不存在.

因此,在我看来,选择返回真或假的比较是任意的,对于一般数据处理,如果它遵循通常的定律(==的反射性,<= =,>的三分法),那将是有利的,以免数据结构依赖这些法律变得困惑.

因此,我要求打破这些法律的一些具体优势,而不仅仅是哲学推理.

编辑2: 我想我现在理解为什么使NaN最大化是一个坏主意,它会搞砸上限的计算.

可能需要NaN!= NaN以避免检测环路中的收敛,例如

while (x != oldX) {
    oldX = x;
    x = better_approximation(x);
}
Run Code Online (Sandbox Code Playgroud)

然而,最好通过比较绝对差异与小限制来编写.所以恕我直言,这是打破NaN反身性的一个相对弱的论据.

floating-point comparison nan ieee-754 iec10967

240
推荐指数
5
解决办法
4万
查看次数

在PHP中查找三个值中的最大值

随着三位数字$x,$y$z,我用下面的代码,以查找最大的,并将其放入$c.有没有更有效的方法来做到这一点?

$a = $x;
$b = $y;
$c = $z;
if ($x > $z && $y <= $x) {
    $c = $x;
    $a = $z;
} elseif ($y > $z) {
    $c = $y;
    $b = $z;
}
Run Code Online (Sandbox Code Playgroud)

php

14
推荐指数
2
解决办法
3万
查看次数

php字符串编号连接搞砸了

我在这里得到了一些PHP代码:

<?php
echo 'hello ' . 1 + 2 . '34';
?> 
Run Code Online (Sandbox Code Playgroud)

输出234,

但是当我在"你好"之前添加一个数字11时:

<?php
echo '11hello ' . 1 + 2 . '34';
?> 
Run Code Online (Sandbox Code Playgroud)

它输出1334而不是245(我预期它),为什么呢?

php string concatenation operator-precedence operator-keyword

12
推荐指数
3
解决办法
3万
查看次数

php类型比较背后的基础哲学

所以php网站上有这个页面显示比较不同值的结果:

http://php.net/manual/en/types.comparisons.php

这是一个有用的参考,但每次我想确保我正在进行类型比较时,我宁愿不必访问此页面.所以我的问题是

在PHP的类型比较逻辑背后是否存在某种潜在的哲学/推理?

例如,我可以看到松散的比较:

  • 1,-1,"1"和"-1"可以视为TRUE 0和"0"可以视为FALSE;
  • 比较数字的字符串值与数字本身的比率为TRUE;

但是在尝试建立模式时,它变得有点毛茸茸.

php comparison types boolean-operations

5
推荐指数
1
解决办法
563
查看次数

比较数字字符串

PHP中的Type-juggling和(严格)大于/小于比较的问题

我知道PHP会尽可能地将字符串解释为数字.

"10" < "1a"  => 10 less than 1      expecting  false 
"1a" < "2"   => 1 less than 2       expecting  true
"10" > "2"   => 10 greater than 2   expecting  true
Run Code Online (Sandbox Code Playgroud)

但在"10" < "1a"php 的情况下返回true.

我不理解这个概念,请帮我澄清一下.

编辑:

但是当我添加"10" + "1a"它时返回11表示php将"10"解释为10并将"1a"解释为1.这是正确的吗?

php

5
推荐指数
2
解决办法
9395
查看次数