3

从文档 -

int strlen ( string $string )

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

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

输出 - 5

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

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

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

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

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

但每次输出——5

我对输出的考虑来自5字数array,但我不确定。如果是这种情况,PHP 是如何做到的?(意味着数 5)

4

3 回答 3

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数组。

手册

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

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

于 2013-07-01T11:12:34.883 回答
3

采用

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

获取单个长度的数组,或

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

得到所有长度的总和

于 2013-07-01T11:13:50.930 回答
2

数组被隐式转换为字符串。在 PHP 中,这会产生 output Arraystrlen()告诉你它有 5 个字母。

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

$a = array('tex','ben');
echo $a;
于 2013-07-01T11:13:22.593 回答