empty

来源:互联网 发布:java 面试宝典2017 编辑:程序博客网 时间:2024/05/22 08:25
  1. 函数说明
    实际执行的是源码中的 i_zend_is_true 函数

    /** * 使用一个字符串分割另一个字符串 * @param mixed $val 变量或表达式 * @return bool */empty ( $val )
  2. 实现流程

    1. 判断参数
      IS_NULL: true
      IS_LONG, IS_BOOL, IS_RESOURCE: 可以理解为 int,为 0 时返回 true
      IS_DOUBLE: 转换为 IS_LONG,即 float转换为 int
      IS_STRING: 如果长度为 0,或者为 “0” | ‘0’,返回 true
      IS_ARRAY: 如果数组长度为 0,返回 true
      IS_OBJECT: ???

    2. 执行逻辑
      按不同参数执行即可

  3. 实现代码

    <?phpfunction myEmpty($val) {    if (is_null($val)) {        return true;    }    switch ($val) {        case is_bool($val):        case is_int($val):        case is_float($val):            $result = ($val == 0);            break;        case is_string($val):            //"" == null 但 is_null("")==false            $result = ($val === "" || $val === "0");            break;        case is_array($val):            $result = (sizeof($val) == 0);            break;        default:            $result = true;    }    return $result;}var_dump(empty(null));var_dump(empty(0));var_dump(empty(0.0));var_dump(empty(00));var_dump(empty('0'));var_dump(empty('0.0'));print "\n";var_dump(myEmpty(null));var_dump(myEmpty(0));var_dump(myEmpty(0.0));var_dump(myEmpty(00));var_dump(myEmpty('0'));var_dump(myEmpty('0.0'));print "\n";
0 0
原创粉丝点击