php - array 上的 strlen 在 php 中返回 5

标签 php arrays strlen

来自文档-

int strlen ( string $string )

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

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

输出 - 5

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

  1. 如果它是一个数组,php 可能会把它转换成字符串,这样数组就会变成-

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

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

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

但是每次它输出- 5

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

最佳答案

该函数将输入转换为字符串,因此数组变为 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() returns NULL when executed on arrays, and an E_WARNING level error is emitted.

Prior [to 5.3.0] versions treated arrays as the string Array, thus returning a string length of 5 and emitting an E_NOTICE level error.

关于php - array 上的 strlen 在 php 中返回 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17403086/

相关文章:

php - 获取 PHP 数组中的最后一个键值对

PHP Sendmail 在 Windows xampp 中失败

c - 二维数组指针语法 - C

PHP strlen() 或 mb_strlen() 返回意外结果

一行代码中的 C strlen() 实现

php - 单击超链接时查看详细的 MySQL 结果

javascript - 解码器链包含 html、javascript、php

java - 将 int[] 转换为 boolean[]

java - 当数组大小 > 索引时为 "java.lang.ArrayIndexOutOfBoundsException: 1"

c++ - strlen() 给出错误的大小,导致数组中出现空字节