• 技术文章 >后端开发 >php教程

    PHP STRING 陷阱原理说明_PHP

    2016-06-01 12:18:00原创429
    A string is series of characters.
    String access and modification by character
    Characters within strings may be accessed and modified by specifying the zero-based offset of the desired character after the string using square array brackets, as in $str[42]. Think of a string as an array of characters for this purpose.
    Note: Strings may also be accessed using braces, as in $str{42}, for the same purpose. However, this syntax is deprecated as of PHP 5.3.0. Use square brackets instead, such as $str[42].
    Warning
    Writing to an out of range offset pads the string with spaces. Non-integer types are converted to integer. Illegal offset type emits E_NOTICE. Negative offset emits E_NOTICE in write but reads empty string. Only the first character of an assigned string is used. Assigning empty string assigns NUL byte.

    以上都是 php manual 中的原话。
    需要注意的时候,我们访问数组的时候 都是使用方括号“[]”,string作为一个也可以使用操作符“[]”进行访问。但是,需要注意的一点就是,访问字符串时候,操作符“[]”中的内容会被转化为int类型的。
    eg: $str ='123456';
    echo $str['php'];//结果是1,因为offset ‘php'转化为integer为0,既是访问的是字符串的第一个字符.
    var_dump(isset($str['php']));//结果是bool(true) 原理同上。
    所以,在我们使用isset判断一个设置是否存在某个键时候,应该先判断试下,传递过来的变量是否是数组,然后再判断是否是存在指定的key
    eg://如果需要判断传递过来的数组是否存在'php'这个key时候,比较安全的做法为:
    复制代码 代码如下:
    function is_set($arr, $key){
    if (is_array($arr) && isset($arr[$key])) {
    //存在该值的逻辑
    } else{
    //$arr不是数组 或者 数组$arr不存在key $key的逻辑
    }
    }

    如果 上面的函数 没有添加 is_array 的判断,当传递一个 字符串过来的时候, 结果就不是我们预想的那样了。

    仅此为记,以免以后也出现类似的问题。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP STRING 陷阱
    上一篇:php下目前为目最全的CURL中文说明_PHP 下一篇:PHP print类函数使用总结_PHP
    PHP编程就业班

    相关文章推荐

    • 几个php应用技巧_PHP教程• 一个php作的文本留言本的例子(三)_PHP教程• php加密解密实用类分享_PHP• 详解如何正确配置PHP开发环境_PHP• phpMyAdmin 安装及问题总结_PHP

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网