1、求正切
echo tan(M_PI_4)."\n"; //求π/4(45度的弧度)的正切值
echo tan(M_PI/3)."\n"; //求π/3(60度的弧度)的正切值
echo tan(M_PI/4)."\n"; //求π/4(45度的弧度)的正切值
echo tan(atan(M_PI_4))."\n"; //求π/4(45度的弧度)的反正切值的正切值
echo M_PI/4; echo "\n"; //π/4
echo M_PI_4; echo "\n"; //π/4
2、闭包函数
$result = 0; //定义变量值
$one =function()
{ var_dump($result); };
$four =function($result)
{ var_dump($result); };
$two =function()use ($result)
{ var_dump($result); };
$three =function()use (&$result)
{ var_dump($result); };
$result++;
$one(); //outputs NULL: Notice: Undefined variable: result
$four(2); //2 有给$result传值
$two(); //0 获取申请变量值
$three(); //1 &$result 先赋值后使用
function test()
{
$param2 = 'every';
// 返回一个匿名函数
return function ($param1) use ($param2) {
// use子句 让匿名函数使用其作用域的变量
$param2 .= 'one';
print $param1 . ' ' . $param2;
};
}
$anonymous_func = test();
$anonymous_func('hello');
function test1()
{
$param2 = 'everyone';
$func = function ($param1) use (&$param2) {
// use子句 让匿名函数使用其父作用域的变量
print $param1 . ' ' . $param2;
};
$param2 = 'everybody';
return $func;
}
$anonymous_func = test1();
$anonymous_func('hello');
class Cart
{
const PRICE_BUTTER = 1.00;
const PRICE_MILK = 3.00;
const PRICE_EGGS = 6.95;
protected $products =array();
public function add($product,$quantity)
{
$this->products[$product] = $quantity;
}
public function getQuantity($product)
{
return isset($this->products[$product]) ? $this->products[$product] :
FALSE;
}
public function getTotal($tax)
{
$total = 0.00;
$callback =
function ($quantity,$product)use ($tax, &$total)
{
$pricePerItem = constant(__CLASS__ ."::PRICE_" .
strtoupper($product));
//var_dump($pricePerItem);
$total += ($pricePerItem *$quantity) * ($tax + 1.0);
};
array_walk($this->products,$callback);
return round($total, 2);;
}
}
$my_cart =new Cart;
// 往购物车里添加条目
$my_cart->add('butter', 1);
$my_cart->add('milk', 3);
$my_cart->add('eggs', 6);
// 打出出总价格,其中有 5% 的销售税.
//print $my_cart->getTotal(0.05) . "\n";
// The result is 54.29
3、array_reduce函数与闭包函数的使用
$arr = array('1','2','3'); //计算数组中数字的和
echo array_reduce($arr , function($result , $v){//使用array_reduce()迭代求和
var_dump($result); //0,1,3
var_dump($v); //1,2,3
//第一轮:0+1=1 => $result 第二轮:1+2 => $result 第三轮:3+3
Return $result+$v; //3+3
},0);
注意:array_reduce使用是$arr数组中值一个个一次给$v;如果指定第三个参数,则该参数将被当成是数组中的第一个值来处理;return 回来的值给$result;初次$result的值为0。
4、usort使用
function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a
}
$a=array(4,2,8,6);
usort($a,"my_sort");
var_dump($a);
public function actionPass()
{
$arr = [new Person('a',1),new Person('b',3),new Person('c',2)];
//var_dump($arr);
usort($arr,function (Person $a,Person $b){
//var_dump($a->age-$b->age);
return $a->age - $b->age;
});
var_dump($arr);
}
5、array_walk函数
function myfunction($value,$key)
{
echo "The key $key has the value $value
";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
//The key a has the value red
6、array_filter() 函数
function test_odd($var)
{
return($var & 1);
}
$a1=array("a","b",2,3,4);
print_r(array_filter($a1,"test_odd"));
7、array_flip() 函数
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$result=array_flip($a1);
print_r($result);
调换数组key与value的位置
结果:Array ( [red] => a [green] => b [blue] => c [yellow] => d )
8、array_intersect() 函数
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");
$a3=array("h"=>"red","i"=>"green","j"=>"blue");
$result=array_intersect($a1,$a2,$a3);
print_r($result);
函数用于比较两个(或更多个)数组的键值,并返回交集。返回的值以第一个被比的$a1的key与value返回
结果:Array ( [a] => red [b] => green [c] => blue )
9、array_intersect_assoc() 函数
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"red","b"=>"green","c"=>"blue");
$result=array_intersect_assoc($a1,$a2);
print_r($result);
比较两个数组的键名和键值,并返回交集。返回的值以第一个被比的$a1的key与value返回
结果:Array ( [a] => red [b] => green [c] => blue )
10、array_intersect_key() 函数
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","c"=>"blue","d"=>"pink");
$result=array_intersect_key($a1,$a2);
print_r($result);
比较两个数组的键名,并返回交集:返回的值以第一个被比的$a1的key与value返回
结果:Array ( [a] => red [c] => blue )
领取专属 10元无门槛券
私享最新 技术干货