<?php
$honorifics = array("None", "Miss", "Ms.", "Mrs.", "Mr.", " Mx", " Dr.", "Prof.", "Rabbi", "Reverend", "Imam");
?>
<?php foreach ($honorifics as $index => $honor){
if ($index = 0) {
continue;
}
echo ( $index );
}?>
打印出来
00000000
为什么?
我看到删除继续修复了问题,但那不是我想要的。我想知道出了什么问题。
如何解决?
答案 0 :(得分:2)
if ($index = 0) {
continue;
}
将0值存储到$index
变量,您想要的是if ($index == 0)
或更好if (!$index)
在php(以及我假设的其他语言)中,您可以在条件中设置变量数据,这通常不是您想要的应该避免的,但有时可能有用,请举例:
$len = $query->count() // mysql query count()
if ($len) {
// do stuff
}
// this can be shortened to
if ($len = $query->count()) {
// do stuff if true
echo $len; // will echo the actual count()
}
为了避免这样的错误,我通常会测试我的变量:
if (0 == $index)
这 WILL 如果你没有故意错过你的表达式会抛出错误:)但是现在,当使用像phpstorm,netbeans或其他人这样的IDE时,通常会有一个检查警告你这个声明。
修改强>:
此处可以在PHPStorm中进行检查:
结果如下:
答案 1 :(得分:1)
您在每个循环中将0
分配给$index
,然后进行检查。
if ($index = 0) {
会像 -
一样工作$index = 0;
if($index) { // if(0) {
哪个是false
,哪个非常好。这就是为什么它不满足条件而$index
在每个循环中打印0
。
应该是 -
if ($index === 0) {
答案 2 :(得分:0)
请更改此内容:
if ($index = 0) {
到这一个:
if ($index == 0) {