
正文
php获取数据长度,php取文本长度
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
php获取数组长度的方法(有实例)
在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧。
php如何获取数组的长度,使用php函数count(),或是sizeof()
例如:
复制代码
代码如下:
$arr
=
Array('0','1','2','3','4');
echo
count($arr);
//
输出
5
$arr
=
array('A','B','C');
echo
sizeof($arr);
//输出3
sizeof()和count()具有同样的用途,这两个函数都可以返回数组元素个数.可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0;
两函数功能一样,手册上讲,sizeof()是函数count()的别名。
那么多维数组长度要怎么统计呢?继续看例子
比如你读取的数组是一个二维数组:
复制代码
代码如下:
?php
$arr=array(
0=array('title'
=
'新闻1',
'viewnum'
=
123,
'content'
=
'ZAQXSWedcrfv'),
1=array('title'
=
'新闻2',
'viewnum'
=
99,
'content'
=
'QWERTYUIOPZXCVBNM')
);
?
如果你想统计数组$arr的长度,也就是说该二维数组只有两条新闻,你想要的数字也是2,但是如果使用count($arr)不同版本的php,统计的结果是不一样的;
后来在php手册中发现,count函数还有第二个参数,解释如下:
count函数有两个参数:
0(或COUNT_NORMAL)为默认,不检测多维数组(数组中的数组);
1(或COUNT_RECURSIVE)为检测多维数组,
所以如果要判断读取的数组$arr是不是有新闻信息,就要这样写了:
复制代码
代码如下:
?php
if(is_array($arr)
count($arr,COUNT_NORMAL)0
)
{
.....
}
else
{
.....
}
?
你可以使用这样的代码来测试该函数:
复制代码
代码如下:
?php
$arr=array(
0=array('title'
=
'新闻1',
'viewnum'
=
123,
'content'
=
'ZAQXSWedcrfv'),
1=array('title'
=
'新闻2',
'viewnum'
=
99,
'content'
=
'QWERTYUIOPZXCVBNM')
);
echo
'不统计多维数组:'.count($arr,0);//count($arr,COUNT_NORMAL)
echo
"br/";
echo
'统计多维数组:'.count($arr,1);//count($arr,COUNT_RECURSIVE)
?
相关问答
Q1: php中统计数组的长度是那个函数?
您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!展开全部
获取一维数组:
count()和sizeof() 都可以直接统计一维数组长度。示例如下:
$arr = Array('0','1','2','3','4','5','6','7','8','9'); echo count($arr); // 输出10
$arr = array('苹果','香蕉','桔子','西瓜','梨','葡萄'); echo sizeof($arr); // 输出6
获取二维数组长度:
count()函数有两个参数:
count($arr,COUNT_NORMAL); //默认,不检测多维数组
count($arr,COUNT_RECURSIVE); //检测多维数组
例子:
$arr = array(
0=array('name'='kong','age'='18'),
1=array('name'='liang','age'='30')
);
count($arr) = 2;
count($arr,COUNT_RECURSIVE) = 6;非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
Q2: PHP中如何得到数组的长度
php如何获取一维数组的长度,使用php函数count(),或是sizeof();
示例如下:
$arr = Array('0','1','2','3','4');
echo count($arr);
// 输出 5
$arr = array('A','B','C');
echo sizeof($arr);
//输出3
多维数组:
$arr=array(
0=array('title' = '新闻1', 'viewnum' = 123, 'content' = '内容1'),
1=array('title' = '新闻2', 'viewnum' = 99, 'content' = '内容2')
);
echo '不统计多维数组:'.count($arr,0); echo '或用sizeof为'.sizeof($arr,0);
echo "br/";
echo '统计多维数组:'.count($arr,1);echo '或用sizeof为'.sizeof($arr,1);
Q3: PHP获取中英混合字符串长度的方法
今晚在写框架的表单验证类时,需要判断某个字符串长度是否在指定区间内,很自然地,想到了PHP中的strlen函数。
.代码如下:
$str
=
'Hello
world!';
echo
strlen($str); //
输出12
然而在PHP自带的函数中,strlen及mb_strlen都是通过计算字符串所占字节数来计算长度的,在不同的编码情况下,中文所占的字节数是不同的。在GBK/GB2312下,中文字符占2个字节,而在UTF-8下,中文字符占3个字节。
.代码如下:
$str
=
'你好,世界!';
echo
strlen($str); //
GBK或GB2312下输出12,UTF-8下输出18
而我们在判断字符串长度时往往需要判断的是字符的数量,而非字符串所占字节数,如在UTF-8下的这段PHP代码:
.代码如下:
$name
=
'张耕畅';
$len
=
strlen($name);
//
输出
FALSE,因为在UTF-8下三个中文占9个字节
if($len
=
3
$len
=
8){
echo
'TRUE';
}else{
echo
'FALSE';
}
那么有什么方便而实用的方法可以获得含中文字符串的长度呢?可以用正则计算出中文字符的个数,在GBK/GB2312编码下除以2,UTF-8编码下则除以3,最后再加上非中文字符串的长度,但这样未免太过麻烦。
WordPress这么一段代码,借鉴如下:
.代码如下:
$str
=
'Hello,世界!';
preg_match_all('/./us',
$str,
$match);
echo
count($match[0]); //
输出9
思想是用正则表达式将字符串分割成单个字符,并直接用count计算出匹配到的字符数,便是我们想要的结果了。
但以上代码在UTF-8编码下并不能处理GBK/GB2312的中文字符串,因为GBK/GB2312的中文字符会被识别为两个字符而计算出来的中文字符数量会翻倍,于是我想到了这么一个办法:
.代码如下:
$tmp
=
@iconv('gbk',
'utf-8',
$str);
if(!empty($tmp)){
$str
=
$tmp;
}
preg_match_all('/./us',
$str,
$match);
echo
count($match[0]);
可兼容GBK/GB2312及UTF-8编码,经小量数据测试通过,但暂未确定是否完全正确,盼有大牛指点一二。
以上本意是为了框架可以兼容多种编码格式,但一般在日常开发中,一个项目是已经可以确定为何种编码的,因此可以使用以下函数来方便地获取字符串长度:
.代码如下:
int
iconv_strlen
(
string
$str
[,
string
$charset
=
ini_get("iconv.internal_encoding")
]
)
Q4: PHP怎么获取字符串长度?
PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:
(1)PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节;
(2)中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。








