strlen on array在php中返回5

时间:2013-07-01 11:10:45

标签: php arrays strlen

来自文档 -

int strlen ( string $string )

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

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

输出 - 5

但是我期待两种类型的输出 -

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

    'texben'因此可能会输出 - 6

  2. 如果第一个不是,它将转换为这样的东西 -

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

  3. 但每次输出 - 5

    我对输出的考虑是来自5字数的array,但我不确定。如果是这样的话,PHP是怎么做的?(意思是计算5)

3 个答案:

答案 0 :(得分:10)

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

与做的一样:

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

echo (string)$a; // Array
var_dump((string)$a); // string(5) "Array"

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

来自Manual

  

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

     

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

答案 1 :(得分:3)

使用

$a = array('tex','ben');
$lengths = array_map('strlen',$a);

获取各个长度的数组,或

$a = array('tex','ben');
$totalLength = array_sum(array_map('strlen',$a));

获得所有长度的总和

答案 2 :(得分:2)

数组被隐式转换为字符串。在PHP中,这会产生输出Array,其中有strlen()的5个字母告诉你。

您可以通过运行以下代码轻松验证:

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