作者:zhanhailiang 日期:2014-10-08

今天遇到一个非常奇怪的bug,測试例如以下:

<?

php

$a = 'abc'; var_dump(isset($a['code'])); // 理论上应该是False,可是确是TRUE

查了下手冊说明:

Example #2 isset() on String OffsetsPHP 5.4 changes how isset() behaves when passed string offsets. <?

php

$expected_array_got_string = 'somestring'; var_dump(isset($expected_array_got_string['some_key'])); var_dump(isset($expected_array_got_string[0])); var_dump(isset($expected_array_got_string['0'])); var_dump(isset($expected_array_got_string[0.5])); var_dump(isset($expected_array_got_string['0.5'])); var_dump(isset($expected_array_got_string['0 Mostel'])); ?> Output of the above example in PHP 5.3:   bool(true) bool(true) bool(true) bool(true) bool(true) bool(true) Output of the above example in PHP 5.4:   bool(false) bool(true) bool(true) bool(true) bool(false) bool(false)

总结例如以下:使用isset前最好先使用is_array/is_string推断下变量类型以避免不同PHP版本号出现不一致性问题,还是那句老话,PHP是弱类型语言。可是弱类型并不表示没有类型。例如以下:

<?php$a = 'abc';
var_dump(is_array($a) && isset($a['code']));

转载于:https://www.cnblogs.com/llguanli/p/6939741.html

关于isset的一点说明相关推荐

  1. linux查看某进程cpu使用情况,linux中如何查看进程对应的cpu使用情况?

    empty与isset的一点使用体会 刚在做表单提交的时候,我想检验一下数据是否存在,并用var_dump函数看一下数据.首先看使用isset()的代码 //登录函数 function login() ...

  2. 深入理解PHP之isset和array_key_exists对比

    1.概述 经常使用isset判断变量或数组中的键是否存在, 但是数组中可以使用array_key_exists这个函数, 那么这两个谁最优呢? 官方文档对两者的定义 - 分类 描述 文档 isset ...

  3. 自学PHP教程之每天学一个函数(一):isset()

    词义理解 is+set :解释成中文就是,is==是否:set==设置.连起来读就是:是否设置? 那么这货返回的一定是一个布尔型.(false或者true) 函数概念: 我翻了翻各种资料,大家对这个函 ...

  4. 等同于JavaScript isset()

    在PHP中,您可以执行if(isset($array['foo'])) { ... } . 在JavaScript中,您经常使用if(array.foo) { ... }来执行相同的操作,但这并不完全 ...

  5. php中的isset函数和empty函数

    1.boolisset ( mixed $var [, mixed $... ] ) php中的isset函数是用来判断某个变量是否被set,其返回值为True或False,判断规则如下: 若变量不存 ...

  6. php is_null(,PHP empty() isset() is_null() 区别与性能比较

    在php中empty() isset() is_null()三个函数都是判断是否为空的情况,但是如果我个要具体的深入去了解这个三个函数发现还是有许多的区别. is_null(), empty(), i ...

  7. php中empty()和isset()、echo()和print()、require()和include()等易混淆函数的区别

    1.echo和print的区别 PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以 ...

  8. php函数isset,PHP isset()函数

    PHP isset() 函数 isset()函数是PHP的内置函数,用于确定是否设置了变量.如果认为已设置变量,则意味着已声明该变量,并且该变量的值与NULL不同.简而言之,它检查变量是否已声明且不为 ...

  9. 零起点学算法07——复杂一点的表达式计算

    零起点学算法07--复杂一点的表达式计算 Description 下面你来计算一个复杂一点的计算表达式 Input 没有输入 Output 输出表达式的值,保留2位小数 题目分析:根号要用sqrt来算 ...

最新文章

  1. VC++ 6.0下OpengGL配置以及glut配置
  2. Java基础学习总结(52)——Liunx系统Centos上搭建Java开发环境
  3. jzoj6804-NOIP2020.9.26模拟jerry【dp】
  4. 使用Android手机进行开发的尝试
  5. 6种创新难以打动人心
  6. 知乎高赞:遇到问题,有哪些有效的分析方法?
  7. 使用交互环境 连载3
  8. 微信小程序云开发教程-WXML入门-数据绑定
  9. 计算机桌面出现蓝色底色,桌面图标有蓝色背景的7种解决办法
  10. Ignoring invalid timezone passed to Connection
  11. ASP.NET Core 导出Excel文件
  12. 让行动持续下去的动力-《刻意练习》读后感
  13. 5项基因改造让你拥抱大财富
  14. 《这么慢,那么美》------ 听见
  15. statsmodels遇到的坑!!!
  16. python从入门到撩妹 2 —— 30行代码实现520小彩蛋
  17. Pandas 数据挖掘 分析
  18. Redis实操(20429字总结)
  19. EMX,PROC文件与电感的简单仿真
  20. PyQt5 QCalendarWidget日历控件

热门文章

  1. Linux I/O多路复用
  2. repeater 控件嵌套
  3. 最新宣布:Intuit和微软公司就Intuit合作平台的最新版Windows Azure SDK扩大合作关系...
  4. java多线程实现归并排序_利用多线程对数组进行归并排序
  5. ADC的有效位数和信纳比计算
  6. 匹配滤波器的物理解释
  7. latex常见编译错误和细节
  8. numpy shape函数
  9. js各种图表组件网站
  10. Linux之Ubuntu切换root su -