永发信息网

关于PHP数组长度,求助。。

答案:2  悬赏:0  手机版
解决时间 2021-03-21 12:54
  • 提问者网友:喧嚣尘世
  • 2021-03-20 17:51
请问$str="";
$len=count($str);
echo $len;
print_r($str);
?>
这$str不是空的吗, 为什么长度会输出为1??
而如果这样:
$str="";
$str[0]="abc";
$len=count($str);
echo $len;
print_r($str);
?>
输出的结果也是1。。
声明一个空的数组应该怎么做啊?要让count()的结果是0的??求解
最佳答案
  • 五星知识达人网友:北方的南先生
  • 2021-03-20 19:20
count -- 计算数组中的单元数目或对象中的属性个数
返回 var 中的单元数目,通常是一个 array,任何其它类型都只有一个单元。

$str="";
$len=count($str);
echo $len;
print_r($str);

string '' (length=0)
但是你算的是数组中的单元数目 数字是0 但是个数也是一个 所以是1

$str="";
$str[0]="abc";
$len=count($str);
echo $len;
print_r($str);

Array ( [0] => abc )
你的数组个数就是 1

声明空数组:
$str=array();
$len=count($str);
echo $len;
var_dump($str);
全部回答
  • 1楼网友:走死在岁月里
  • 2021-03-20 20:01
你记住两点: 1.c风格字符串只要是使用双引号(半角)的,都会以\0结束,就是说会多出一个字符。 2.凡是数组没有指名大小的定义,全部都会以赋值号右边的初始化长度作为数组默认大小。 那么你的问题解答如下: 字符串"abcd"长度为4,是因为字符串长度指的是字符串中有效字符的个数,不包含c风格结束符\0,而字符串数组a[]="abcd"长度为5,因为这个是算的数组的长度,也就是所占用的存储空间,当然要包含\0结束符(它也要占用存储空间)。a[10]="abcd"的长度为10,因为你显示指定了字符数组的长度,。所占内存当然就是10咯,它的存储空间是连续的,也就是说,10个字符空间中,前面分别是a,b,c,d和结束符\0,后面全部都是0(被初始化了),总共有5个0,加上前面的abcd和结束符\0,一共10个,他们的存储是连续的。 a[]={'a','b','c','d'},你没有按照双引号定义,因此不算c风格字符串,只是一个字符数组。而你又没有指名大小,那么它的大小等于你初始化的长度,这里就是4,sizeof也等于4,没有结束符\0了。后面一个问题重复了,不解释!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯