#PHP 数组添加元素、统计数组相同元素个数、改变数组key值~_~

 一、数组添加元素

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;
    }       
只要路是对的,就不怕路远
原文地址:https://www.cnblogs.com/klmei/p/6485861.html