strlen on array在php中返回5

Tri*_*der 3 php arrays strlen

来自文档 -

int strlen ( string $string )
Run Code Online (Sandbox Code Playgroud)

它需要字符串作为参数,现在当我这样做时 -

$a = array('tex','ben');
echo strlen($a);
Run Code Online (Sandbox Code Playgroud)

输出 - 5

不过我期待的是,有两种输出 -

  1. 如果是数组,php可能会将其转换为字符串,因此数组将变为 -

    'texben' 所以它可能输出 - 6

  2. 如果第一个不是它会转换它像这样 -

    "array('tex','ben')"所以预期的输出应该是 - 18(所有项目的数量)

但每次输出 - 5

我从输出的考虑是5array字数,但我不知道.如果PHP是这样做的话?(意味着计数5)

MrC*_*ode 10

该函数将输入转换为字符串,因此数组变为Array,这就是为什么你得到5的计数.

它和做的一样:

$a = array('tex','ben');

echo (string)$a; // Array
var_dump((string)$a); // string(5) "Array"
Run Code Online (Sandbox Code Playgroud)

这是PHP 5.3之前的行为.但是在PHP 5.3及更高版本中,strlen()将返回NULL数组.

手册:

strlen()在数组上执行时返回NULL,并发出E_WARNING级别错误.

之前[到5.3.0]版本将数组视为字符串Array,因此返回字符串长度为5并发出E_NOTICE级别错误.