PHPisset与array_key_exists的比较

PHP isset 与 array_key_exists 这两个东西都可以用检查阵列的键,但仅管用起来有点类似,本质上却是不相同的,PHP isset 是一个语言结构,而 array_key_exists 则是一个函数(function),执行速度上有所差异,更重要的在于某些情况下,两者所回传的结果有所不同,许多任务程师们希望增加程序执行的性能,而采用 isset 来处理阵列键(Array key)的查找,但并非任何情况都适合用 isset 来取代 array_key_exists。

PHP isset 与 array_key_exists 的基本语法

bool isset ( 要检查的阵列键 ); bool array_key_exists ( 要查找的键名 $key , 要被检查的 PHP 阵列 )

由语法可以得知两者都是回传布林值,也就是 TRUE OR FALSE,看似类似的两个用法,其实是有差异的。

PHP isset 与 array_key_exists 回传差异的部分

 <?php
$NewArray = array('A' => null, 'B' => '');
if (isset($NewArray[A])) {
 echo "用 isset 找到阵列中含有键名 A<br>";
}
if (isset($NewArray[B])) {
 echo "用 isset 找到阵列中含有键名 B<br>";
}
if (array_key_exists('A', $NewArray)) {
 echo "用 array_key_exists 找到阵列中含有键名 A<br>";
}
if (array_key_exists('B', $NewArray)) {
 echo "用 array_key_exists 找到阵列中含有键名 B";
}
?>

以上输出结果
用 isset 找到阵列中含有键名 B
用 array_key_exists 找到阵列中含有键名 A
用 array_key_exists 找到阵列中含有键名 B
由示例的输出结果可以看到,PHP isset 在阵列键值为 null 时,会回传 false,所以第一次透过 if 条件判断后,并不会有结果输出,第二次找键名 B 却有找到,是因为 $NewArray[B] 虽然是空值,但并非为 null,这也是有差异的。再来看看 array_key_exists 函数,无论查找的键名是不是有值或者 null,只要有找到,就一律回传 true,这就是两者间的主要差异之一,清楚这点之后,未来在设计 PHP 的时候,如何选用这两个方式就可以正确掌握。

推荐给您的

网页设计

PHPfprintf函数

2022-6-19 7:10:00

网页设计

CSSdisplay属性

2022-6-19 7:40:30



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 yp10086@vip.qq.com 举报,一经查实,本站将立刻删除。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索