php数组使用全集(二)

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 )

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180908G1EIBD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券