PHP 关联数组
我有一个数组,
$arrTest = array('val1','val2','val3','val4');
$arrTest['lastKey'] = 'Last Key';
foreach($arrTest as $key => $val) {
if($key == 'lastKey') {
echo "last found";
}
}
上面的代码不起作用。我在数组中添加了关联元素。会不会是这个原因呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
将
==
更改为===
:您现有的代码回显
lastfound
两次,一次用于键0
和一次用于键lastKey
。使用
==
比较整数0
和字符串'lastKey'
返回 true!来自 PHP 手册:
Change
==
to===
in:Your existing code echos
last found
twice, once for key0
and once for keylastKey
.Comparing integer
0
and string'lastKey'
using==
returns true !!From the PHP manual:
使用
===
进行比较。因为当键0
与字符串lastKey
进行比较时,字符串会被转换为整数,并返回 false 结果。http://codepad.org/5QYIeL4f
了解有关差异的更多信息:http://php.net/manual/en/language.operators.comparison.php
Use
===
to compare. Because when key0
will be compared with stringlastKey
, string will be converted to integer and false result will be returned.http://codepad.org/5QYIeL4f
Read more about differences: http://php.net/manual/en/language.operators.comparison.php
您还需要更改相等条件来检查类型。
这是因为 PHP 将
' ' == 0
计算为 true。You need to change your equality condition to check the type as well.
This is because PHP evaluates
' ' == 0
as true.当我运行你的代码时,“最后找到”被输出两次。在 PHP 中,'lastKey' 的计算结果为 0,因此
if($key == 'lastKey')
实际上匹配两次:一次匹配 0,一次匹配特殊元素。When I ran your code, 'last found' was outputted twice. 'lastKey' is evaluated to 0 in PHP, so
if($key == 'lastKey')
actually matches twices: once for 0 and once for your special element.使用 end() 函数获取数组的最后一个键并在 if 语句中进行比较。
use the end() function to get the last key of an array and compare it in your if statement.
您的代码工作正常:
在这里查看:http://codepad.org/hfOFHMnc
但是使用“===”而不是“==” “因为您可能会遇到错误
将字符串与 0 进行比较,它会回显两次。
Your code is working fine :
see it here : http://codepad.org/hfOFHMnc
However use "===" instead of "==" as you might encounter a bug when
comparing the string with 0 , and it will echo twice.
如果你想测试数组键是否存在,只需使用
array_key_exists
:你也可以使用
isset
但请注意,如果值与该键相关联的是null
。If you want to test if an array key exists, simply use
array_key_exists
:You could also use
isset
but note that it returns false if the value associated to the key isnull
.