|
一、数组添加元素
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;
}
|
|
|