永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-03-21 12:54
请问$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的??求解
最佳答案
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.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了。后面一个问题重复了,不解释!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我老爱开玩笑,可男朋友老是把我的玩笑话当真
省内微厅流量出了省就不能用吗
2015奥迪Q3标准款首付15万24期月供多少钱?
下面的生态系统中,自动调节能力最大的是A.一
iphone se使用ios10体验怎么样
米开朗基罗雕大卫像用了多长时间
顺昌车行专卖地址在什么地方,想过去办事
魔域SF怎么买魔石商店被隐藏的物品?
养乐多里含的益生菌和一般酸奶里的益生菌有什
单选题海洋中的鲸在恐惧的时候会发出巨大的尖
歌词里有叶飞是什么步子舞
第三代i7 cpu有双核的吗?最高级别的是什么型
知悲者并不悲哀,不知悲者却甚是悲哀。知悲者
思美人主题曲叫什么
我给别人留言不是私密留言为什么别人那里显示
推荐资讯
大学毕业几年还能返校补考拿毕业证吗
郑州市有多少人,常住人口加流动人口
口字旁加周念什么
捷联惯导英文介绍
求橙墨沫的《假如》TXT!!!
什么牌子的冰箱最省电
下熟怎么去啊,有知道地址的么
绵阳的学吉他的在哪 怎么算学费的
单选题一个色盲女性和一个正常男性结婚,生了
注塑机80扽是多大的螺杆
超威电瓶50安价格
数码相机测灯频闪科学吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?