匿名函數(Anonymous functions),也叫閉包函數(closures),容許 臨時建立一個沒有指定名稱的函數。最常常用做回調函數(callback)參數的值。固然,也有其它應用的狀況。php
結合array_walk和匿名函數來實現一個結算功能數組
array_walk() 函數對數組中的每一個元素應用回調函數。若是成功則返回 TRUE,不然返回 FALSE。閉包
1 <?php 2 class anyMouseTest{ 3 //定義商品類型、價格 4 const IPHONE6_PRICE = 5500; 5 const XIAOMI4_PRICE = 1999; 6 const HONERX_PRICE = 799; 7 8 private $_productSort; 9 private $_products; 10 11 public function __construct(){ 12 $this->_productSort = array('iphone6','xiaomi4','honerx'); 13 $this->_products = array(); 14 } 15 16 public function addProduct($product , $sum){ 17 if(in_array($product , $this->_productSort) && is_int($sum)){ 18 $this->_products[$product] = $sum; 19 } 20 } 21 22 public function getCount($tax){ 23 $count = 0; 24 25 $callback = function($sum , $product) use ($tax , &$count){ 26 $price = constant(__CLASS__.'::'.strtoupper($product).'_PRICE'); 27 $curPrice = $price* $sum * $tax; 28 $count += $curPrice; 29 }; 30 31 array_walk($this->_products, $callback); 32 return $count; 33 } 34 } 35 36 $oanyMouse = new anyMouseTest; 37 38 $oanyMouse->addProduct('iphone6',1); 39 $oanyMouse->addProduct('honerx',2); 40 echo $oanyMouse->getCount(1);
其中constant用於返回字符串形式常量的值iphone