一、数组添加元素
1、定义和用法:
array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。
2、语法:
array_push(array,value1,value2...)
array指数组,value指添加的值
3、举例:
<?php
$a=array("red","green");
array_push($a,"blue","yellow");
print_r($a); ?>
输出结果:Array ( [0] => red [1] => green [2] => blue [3] => yellow )
二、统计数组相同元素个数
1、定义和用法:
array_count_values()返回一个数组,该数组用数组中的值作为键名,该键值是在数组中出现的次数。
2、语法:
array_count_values(array)
array指数组
3、举例:
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));?>
输出结果:Array( [1] => 2 [hello] => 2 [world] => 1)
三、改变数组key值
1、举例:
数组$datas的形式如下:
数组$ary2的形式如下:
将数组$ary2的key值赋给数组$datas的key值,代码如下:
foreach ($datas as $key => $value){
$keys = $value->name; //取出要作为key的字段
$datas[$value->name] = $value; //赋值
unset($datas[$key]);//释放原来的key
}
print_r($datas);exit;
输出结果:
对于像我这样的PHP小白来说,这些很实用的数组函数还是很值得积累一下。以下代码是在二次开发zentao(禅道)php框架编写的,其中就涉及到以上的三个知识点。
public function getDataOftasksPerAssignedTo() { $datas = $this->dao->select('t1.assignedTo AS name,t1.finishedBy,t1.closedBy') ->from(TABLE_TASK)->alias('t1') ->where($this->reportCondition()) ->fetchAll(); if(!$datas) return array(); if(!isset($this->users)) $this->users = $this->loadModel('user')->getPairs('noletter'); $ary1 = array(); foreach($datas as $account => $data) { if ($data->name == 'closed'){ if (!empty($data->finishedBy)){ $data->name = $data->finishedBy; }else if(empty($data->finishedBy) && !empty($data->closedBy)){ $data->name = $data->closedBy; } } Array_push($ary1, $data->name); } $ary2 = array_count_values($ary1); foreach ($datas as $key => $value){ $value->value = $ary2[$value->name]; $keys = $value->name; //取出要作为key的字段 $datas[$value->name] = $value; //赋值 unset($datas[$key]); if(isset($this->users[$value->name])) $value->name = $this->users[$value->name]; } return $datas; }