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