加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.52wenzhou.com/)- 云专线、建站、虚拟专用网络、智能边缘云、设备管理!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php数组分组简单范例

发布时间:2023-11-06 11:32:23 所属栏目:PHP教程 来源:网络
导读:     待解决的问题:我们能否减少new的使用,同时避免需要新增对象的时候,了解对象的类名。



    思路:php5提供了克隆方法,我们可以新增一个对象,然后每次需要新增和她同类
    待解决的问题:我们能否减少new的使用,同时避免需要新增对象的时候,了解对象的类名。
 
    思路:php5提供了克隆方法,我们可以新增一个对象,然后每次需要新增和她同类的对象,克隆他就可以了。
 
    原型(Prototype)模式示例:
 
     代码如下
 
    1
 
    2 //机兵类
 
    3 class Marine
 
    4 {
 
    5   //所属的用户ID
 
    6   public $playerID
 
    7   //构造函数,参数为用户的id
 
    8   public function __construct($id)
 
    9   {
 
    10   $this->playerID = $id;
 
    11   }
 
    12 }
 
    13 //兵种的管理类
 
    14 class TroopManager
 
    15 {
 
    16   //数组,用于存放多个兵种的原型
 
    17   public $troopPrototype = array();
 
    18   //增加原型,第一个参数为原型的名字,第二个参数为原型对象
 
    19   public function addPrototype($name, $prototype)
 
    20   {
 
    21     $this->troopPrototype[$name] = $prototype;
 
    22   }
 
    23   //获取原型的克隆,也就是替代new的方法,参数为原型的名字
 
    24   public function getPrototype($name)
 
    25   {
 
    26     return clone $this->troopPrototype[$name];
 
    27   }
 
    28 }
 
    29 //初始化兵种的管理类
 
    30 $manager = new TroopManager();
 
    31 //初始化两个属于不同玩家的机兵的原型
 
    32 $m1 = new Marine(1);
 
    33 $m2 = new Marine(2);
 
    34 //增加原型,同时用比较容易记忆的名字来命名原型
 
    35 $manager->addPrototype('Marine of 1', $m1);
 
    36 $manager->addPrototype('Marine of 2', $m2);
 
    37 //当需要新增对象的时候,我们可以不必知道对象的类名和初始化的工作
 
    38 $m3 = $manager->getPrototype('Marine of 1');
 
    39 ?>
 
    用途总结:原型模式可以将新增对象的工作细节封装。
 
 
    实现总结:需要一个原型管理类,实现增加和获取克隆原型的方法。注意这里由于为了简明,省略了一些东西,实际上我们可以在克隆方法上做一些改动,也可以用接口规范每个原型类。
 
  代码如下
 
  1
 
  $teams=array(1,2,3,4,5,6,7,8,9);
 
  $teams=array_chunk($teams,2);
 
  print_r($teams);
 
  /*
 
  2 Array
 
  3 (
 
  4     
 
  [0] => Array
 
  5         
 
  (
 
  6             
 
  [0] => 1
 
  7             
 
  [1] => 2
 
  8         
 
  )
 
  9  
 
      
 
  [1] => Array
 
  10         
 
  (
 
  11             
 
  [0] => 3
 
  12             
 
  [1] => 4
 
  13         
 
  )
 
  14  
 
      
 
  [2] => Array
 
  15         
 
  (
 
  16             
 
  [0] => 5
 
  17             
 
  [1] => 6
 
  18         
 
  )
 
  19  
 
      
 
  [3] => Array
 
  20         
 
  (
 
  21             
 
  [0] => 7
 
  22             
 
  [1] => 8
 
  23         
 
  )
 
  24  
 
      
 
  [4] => Array
 
  25         
 
  (
 
  26             
 
  [0] => 9
 
  27         
 
  )
 
  28  
 
  )
 
  29 */
 
  30 ?>
 
  array_chunk() 函数把一个数组分割为新的数组块。
 
  其中每个数组的单元数目由 size 参数决定。最后一个数组的单元数目可能会少几个。
 
  可选参数 preserve_key 是一个布尔值,它指定新数组的元素是否有和原数组相同的键(用于关联数组),还是从 0 开始的新数字键(用于索引数组)。默认是分配新的键。
 

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章