自定义PHP中获取字符串长度函数

在PHP中,能够经过预约义函数strlen()获取字符串的长度,那如何自定义这个函数,或者这个函数实现的原理是怎样的呢?php

原理:当咱们获取一个字符串时,先查看字符串中第一个字符是否是字符串的结束符,若是不是,则认为有一个长度了,设置一个变量加1,反之,返回这个记录长度的变量。数组

这里有一个关键,就是字符串的结束标识符是什么?咱们知道,在C中,结束符是'\0',可它不是PHP中字符串的结束标识符(究竟是什么,我也不知道,没查到)。这里,咱们假设‘\0’是PHP字符串的结束标识符,则获取字符串的长度函数则为:函数

<?php
    function get_str_length($str)
    {
         $index = 0;//记录字符串长度的变量
         while($str[$index]!='\0')//用数组方式读取字符串中字符,若是不是结束符,则长度加1
         {
              $index++; 
         }
         return $index;
    }
?>

然而,PHP中结束符并非'\0',因此这样不行。spa

怎么办呢?能够使用PHP的预约义函数 isset()实现。code

原理:当索引到字符串的结束位置的值时,是未定义的,返回false,其余字符返回true。索引

好比字符串:字符串

<?php
   $str='hello world';//11个长度
   var_dump(isset($str[11]));//返回的false,只有下标超过了字符串的长度时,才返回false,至关于没定义这个变量
?>

知道这个原理就简单了:get

<?php
    function get_str_length($str)
    {
         $index = 0;//记录字符串长度的变量
         while(isset($str[$index]))//用数组方式读取字符串中字符,当没有超过字符串长度时,返回true
         {
              $index++; 
         }
         return $index;
    }
?>

好了,这个函数就能实现预约义函数strlen()的功能啦!io

补充:isset()函数function

简单的说,若是变量被定义了,返回true,反之,返回false。

严谨点,变量被定义了,而且值不是null时,返回true,反之false.

<?php
   $a = null;//这个变量定义了,可是值为null
   var_dump($a);//返回的是false,虽然被定义了
?>
相关文章
相关标签/搜索