当前位置:首页 » 编程语言 » php数组count

php数组count

发布时间: 2022-12-20 18:58:58

php如何统计一个数组中相同元素的个数

简单的循环即可,选出重复(出现次数大于等于2)的元素并统计每个重复元素出现的次数:

php中的 array_count_values() 函数可以实现

array_count_values() 函数用于统计数组中所有值出现的次数。

本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。

array_count_values(array)

例如:

<?php

$a=array("Cat","Dog","Horse","Dog");

print_r(array_count_values($a));

?>

输出:

Array ( [Cat] => 1 [Dog] => 2 [Horse] => 1 )

(1)php数组count扩展阅读:

php统计数组元素个数

count():对数组中的元素个数进行统计;

sizeof():和count()具有同样的用途,这两个函数都可以返回数组元素个数,得到一个常规标量变量中的元素个数。

如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0;

array_count_value():统计每个特定的值在数组$array中出现过的次数;

如:

$array=array(4,5,1,2,3,1,2,1);

$ac=array_count_value($array);

将创建一个名为$ac数组,该数组包括:

关键字 值

4 1

5 1

1 3

2 2

3 1

② php中count(array >=0)是什么意思,其中array是数组

ARRAY是数组 这段的意思就是说 如果数组里还有元素 就一直计数 也就是COUNT++,到最后echo count(变量数组名) 会显示出这个数组中有多少个元素,COUNT一般就是计数用的

③ php编程: 怎样计算某一值在数组中重复出现的次数

使用array_count_values函数可以找出数组中相同值出现的次数,array_count_values用法如下:
array_count_values

统计数组中所有的值出现的次数
array
array_count_values
(
array
$input)
array_count_values()
返回一个数组,该数组用
input

数组中的值作为键名,该值在:input
数组中出现的次数作为值
input:统计这个数组的值
返回值:
返回一个关联数组,用
input数组中的值作为键名,该值在数组中出现的次数作为值。
示例:
?php
    $array = array(1, "hello", 1, "world", "hello");
    print_r(array_count_values($array));
?
以上例程会输出:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)需要取出哪个值的次数,就在返回的数组中获取对应的key值即可,例如示例中array_count_values($array)['hello']就可以取出数组中hello的个数。

④ php中count()函数的作用

PHP中count() 函数表示:计算数组中元素的个数,或者计算对象中属性的个数;

计算数组元素个数示例:

<?php
$arr=array("","google","soso");
echocount($arr);
//结果:3
?>

计算对象中的属性个数示例:

<?php
classPerson{
public$name;
public$age;

publicfunction__construct(){
$this->name='';
$this->age='10';
}
functionmsg(){
echo"msgfunction.";
}
}
//new对象
$per=newPerson();

//获取对象属性关联数组
$var=get_object_vars($per);

//计算对象属性个数
echocount($var);

//输出结果为:2

?>

⑤ 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;

(5)php数组count扩展阅读:

PHP 在数据库方面的丰富支持,也是它迅速走红的原因之一,它支持下列的数据库或是数据文件:

Adabas 、D、 DBA、dBase 、dbm 、filePro 、Informix 、InterBase、mSQL 、Microsoft SQL Server、·MySQL、Solid、Sybase、 Oracle 、PostgreSQL

今时今日,数据库系统已经成为各个动态网站上 web 应用程序的重要组成部分。由于非常敏感和机密的数据有可能保存在数据库中,所以对数据库实施保护就显得尤为重要了。

要从数据库中提取或者存入数据,就必须经过连接数据库、发送一条合法查询、获取结果、关闭连接等步骤。目前,能完成这一系列动作的最常用的查询语言是结构化查询语言 Structured Query Language (SQL)。可以看看攻击者是如何篡改 SQL 查询语句的。

⑥ php统计数组元素个数的方法

这篇文章主要介绍了php统计数组元素个数的方法的相关资料,需要的朋友可以参考下
count():对数组中的元素个数进行统计;
sizeof():和count()具有同样的用途,这两个函数都可以返回数组元素个数.可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0;
array_count_value():统计每个特定的值在数组$array中出现过的次数;
如:
?
2$array=array(4,5,1,2,3,1,2,1);
$ac=array_count_value($array);
将创建一个名为$ac数组,该数组包括:
?
2
3
4
5
6
7
8
9
0
1关键字

4
1
5
1
3
2
2
3
1
发一个网友的思路,也非常不错
?
2
3
4
5
6
7
8
9
0
1
2
3
4$arr
=
array(
'1011,1003,1008,1001,1000,1004,1012',
'1009',
'1011,1003,1111'
);
$result
=
array();
foreach
($arr
as
$str)
{
$str_arr
=
explode(',',
$str);
foreach
($str_arr
as
$v)
{
$result[$v]
=
isset($result[$v])
?
$result[$v]
:
0;
$result[$v]
=
$result[$v]
+
1;
}
}
print_r($result);
以上所述就是本文的全部内容了,希望大家能够喜欢。

⑦ php如何计算数组的单元个数

//count函数有两个参数:
//0(或COUNT_NORMAL)为默认,不检测多维数组(数组中的数组);
//1(或COUNT_RECURSIVE)为检测多维数组,
$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);

⑧ PHP的sizeof和count有什么区别

没有区别,sizeof是count的别名,所以你懂得:性能和功能都是一样的。。

答题不易,互相理解,您的采纳是我前进的动力,感谢您。
希望回答对你有帮助,如果有疑问,请继续追问

⑨ PHP的count(数组)和strlen(字符串)的内部实现。

翻了下PHP内核的定义,大概心中也有了答案了

count()和strlen()都是O(1)的时间复杂度

试想一下如果strlen()需要O(N)的复杂度那未免也太慢了,字符串长度起来的话服务器不是要直接挂掉吗

这两个函数都是典型的空间换时间的做法

我们可以先看看zvalue的结构:

typedefunion_zvalue_value{
longlval;/*longvalue*/
doubledval;/*doublevalue*/
struct{
char*val;
intlen;
}str;
HashTable*ht;/*hashtablevalue*/
zend_object_valueobj;
zend_ast*ast;
}zvalue_value;

这里用的是一个联合体,当变量类型是string类型的时候附加存储多了一个len的整型变量,显而易见需要取长度直接利用记录值就可以了,自然就是O(1)

对于count()常用的参数类型应该为数组,对于继承Countable的类暂不作讨论

数组实现方式为Hashtable,直接看看他的结构吧

typedefstruct_hashtable{
uintnTableSize;//hashBucket的大小,最小为8,以2x增长。
uintnTableMask;//nTableSize-1,索引取值的优化
uintnNumOfElements;//hashBucket中当前存在的元素个数,count()函数会直接返回此值
ulongnNextFreeElement;//下一个数字索引的位置
Bucket*pInternalPointer;//当前遍历的指针(foreach比for快的原因之一)
Bucket*pListHead;//存储数组头元素指针
Bucket*pListTail;//存储数组尾元素指针
Bucket**arBuckets;//存储hash数组
dtor_func_tpDestructor;//在删除元素时执行的回调函数,用于资源的释放
zend_boolpersistent;//指出了Bucket内存分配的方式。如果persisient为TRUE,则使用操作系统本身的内存分配函数为Bucket分配内存,否则使用PHP的内存分配函数。
unsignedcharnApplyCount;//标记当前hashBucket被递归访问的次数(防止多次递归)
zend_boolbApplyProtection;//标记当前hash桶允许不允许多次访问,不允许时,最多只能递归3次
#ifZEND_DEBUG
intinconsistent;
#endif
}HashTable;

count直接获取nNumOfElements大小,所以也是O(1)

补充------------------------------------------------

count() 函数的定义在这里

/*{{{protointcount(mixedvar[,intmode])
(usuallyanarray)*/
PHP_FUNCTION(count)
{
zval*array;
zend_longmode=COUNT_NORMAL;
zend_longcnt;
zval*element;

ZEND_PARSE_PARAMETERS_START(1,2)
Z_PARAM_ZVAL(array)
Z_PARAM_OPTIONAL
Z_PARAM_LONG(mode)
ZEND_PARSE_PARAMETERS_END();

switch(Z_TYPE_P(array)){
caseIS_NULL:
php_error_docref(NULL,E_WARNING,"");
RETURN_LONG(0);
break;
caseIS_ARRAY:
if(mode!=COUNT_RECURSIVE){
//类型为数组时调用zend内核函数zend_array_count()
cnt=zend_array_count(Z_ARRVAL_P(array));
}else{
cnt=php_count_recursive(Z_ARRVAL_P(array));
}
RETURN_LONG(cnt);
break;
caseIS_OBJECT:{
zvalretval;
/*first,wecheckifthehandlerisdefined*/
if(Z_OBJ_HT_P(array)->count_elements){
RETVAL_LONG(1);
if(SUCCESS==Z_OBJ_HT(*array)->count_elements(array,&Z_LVAL_P(return_value))){
return;
}
}
/*()method*/
if(instanceof_function(Z_OBJCE_P(array),zend_ce_countable)){
zend_call_method_with_0_params(array,NULL,NULL,"count",&retval);
if(Z_TYPE(retval)!=IS_UNDEF){
RETVAL_LONG(zval_get_long(&retval));
zval_ptr_dtor(&retval);
}
return;
}

/*IfThere'snohandleranditdoesn'*/
php_error_docref(NULL,E_WARNING,"");
RETURN_LONG(1);
break;
}
default:
php_error_docref(NULL,E_WARNING,"");
RETURN_LONG(1);
break;
}
}

如果没有特别指定mode参数为 COUNT_RECURSIVE 的话(即作遍历),跳转到 zend 的数组计数函数 zend_array_count()

#definezend_hash_num_elements(ht)
(ht)->nNumOfElements

...
...

staticuint32_tzend_array_recalc_elements(HashTable*ht)
{
zval*val;
uint32_tnum=ht->nNumOfElements;

ZEND_HASH_FOREACH_VAL(ht,val){
if(Z_TYPE_P(val)==IS_INDIRECT){
if(UNEXPECTED(Z_TYPE_P(Z_INDIRECT_P(val))==IS_UNDEF)){
num--;
}
}
}ZEND_HASH_FOREACH_END();
returnnum;
}

ZEND_APIuint32_tzend_array_count(HashTable*ht)
{
uint32_tnum;
if(UNEXPECTED(ht->u.v.flags&HASH_FLAG_HAS_EMPTY_IND)){
num=zend_array_recalc_elements(ht);
if(UNEXPECTED(ht->nNumOfElements==num)){
ht->u.v.flags&=~HASH_FLAG_HAS_EMPTY_IND;
}
}elseif(UNEXPECTED(ht==&EG(symbol_table))){
num=zend_array_recalc_elements(ht);
}else{
num=zend_hash_num_elements(ht);
}
returnnum;
}

IS_REFERENCE:间接 zval 指的就是其真正的值是存储在其他地方的。注意这个IS_REFERENCE类型是不同的,间接 zval 是直接指向另外一个 zval 而不是像zend_reference结构体一样嵌入 zval。

只有当数组中有HASH_FLAG_HAS_EMPTY_IND 这个 flag 时(间接zval)才会对数组进行遍历校验,其他情况下都是直接取 数组(hash table) 里面的 nNumOfElements 的值,答案显而易见了,就是O(1)

⑩ 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;非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

热点内容
活动上线前服务器配置要注意什么 发布:2025-05-15 16:38:43 浏览:948
王者荣耀安卓区怎么免费转苹果 发布:2025-05-15 16:18:02 浏览:762
威朗pro高配都有哪些配置 发布:2025-05-15 15:57:09 浏览:957
数据库分页查询数据 发布:2025-05-15 15:45:13 浏览:521
phpmyadmin上传限制 发布:2025-05-15 15:39:52 浏览:432
如何给手机配置真正的电脑 发布:2025-05-15 15:39:52 浏览:765
抽脚本命令 发布:2025-05-15 15:39:45 浏览:660
sok编程 发布:2025-05-15 15:33:21 浏览:41
lms算法程序 发布:2025-05-15 15:31:53 浏览:570
数据库二级映射 发布:2025-05-15 15:14:09 浏览:478