php数组分组简单范例
发布时间:2023-11-06 11:33:26 所属栏目:PHP教程 来源:未知
导读: 待解决的问题:我们能否减少new的使用,同时避免需要新增对象的时候,了解对象的类名。
思路:php5提供了克隆方法,我们可以新增一个对象,然后每次需要新增和她同类
思路: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 开始的新数字键(用于索引数组)。默认是分配新的键。 (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐