记住,兄弟们,常量没用作用域,只有变量才有哈
我们来聊一下静态局部变量
静态局部变量首先他是一个局部变量,然后被关键字static修饰
让静态局部变量销毁会两种途径,第一:使用unset函数。第二:这个.php文件执行完毕后销毁
而普通的局部变量是这个所在函数执行完之后就自动销毁。
普通的变量是怎么样的?
<?php
show();
show();
show();
show();
show();
function show()
{
$count=0;
$count++;
echo $count."次","<br />";
}
?>
静态变量呢?
<?php
show();
show();
show();
show();
show();
function show()
{
static $count=0;
$count++;
echo $count."次","<br />";
}
?>
检查函数是否定义:
<?php
show();
show();
show();
show();
show();
function show()
{
static $count=0;
$count++;
echo $count."次","<br />";
}
var_dump(function_exists("show"));
?>
兄弟们,重点来了,递归:
陈业贵,递归是什么?
老师,是自己调用自己。
在哪里自己调用自己呢?
老师,在函数内部。
但是这个的核心是什么?
老师,是必须在外部调用函数,才能自己调用自己
为什么,因为你不给我钱,我怎么花啊
老师,俺代码演示把
老师:好
那陈业贵我想问你就是一般为重复调用会无休止的执行下去怎么停止呢
陈业贵:老是,加个条件,也就是说什么情况下停止就行了呀
<?php
show();
function show()
{
static $i=1;
if($i<10)
{
echo($i);
}
++$i;
echo "<br />";
show();
}
?>
记住,兄弟们,递归解决无限极分类的,虽然这个技术我也不懂勒
兄弟们,99乘法表哈来了
<?php
fn(1);
function fn($num)
{
for ($i=1; $i <=$num ; $i++) {
# code...
echo "$num*$i=";
echo($num*$i);
echo "<br />";
}
if ($num<9) {
# code...
fn($num+1);
}
}
?>
自己去试试吧,兄dei
<?php
echo "<pre/>";
//$arr = [1,4,5,3,4,65,7];
//krsort($arr);
//var_dump($arr);
$info = [
['name' => '张三', 'height' => 150],
['name' => '李四', 'height' => 190],
['name' => '王二麻子', 'height' => 170],
];
usort($info, function ($item1, $item2){
if($item1['height'] > $item2['height']){
return 1;
}elseif($item1['height'] < $item2['height']){
return -1;
}else{
return 0;
}
});
var_dump($info);
// -1 0 1
根据上面的这个的解析:
<?php
echo "<pre/>";
$arr = [1,4,5,3,4,65,7];
krsort($arr);
var_dump($arr);
意思是:降序排序哈,这是降序排序
效果:
array(7) {
[6]=>
int(7)
[5]=>
int(65)
[4]=>
int(4)
[3]=>
int(3)
[2]=>
int(5)
[1]=>
int(4)
[0]=>
int(1)
}
意思是:二维数组,
['name' => '张三', 'height' => 150],0
['name' => '李四', 'height' => 190],1
['name' => '王二麻子', 'height' => 170],2
'name' => '张三',00
'height' => 150 01
'name' => '李四',10
'height' => 190 11
'name' => '王二麻子' 20
'height' => 170 21
$info = [
['name' => '张三', 'height' => 150],
['name' => '李四', 'height' => 190],
['name' => '王二麻子', 'height' => 170],
];
usort($info, function ($item1, $item2){
if($item1['height'] > $item2['height']){
return 1;
}elseif($item1['height'] < $item2['height']){
return -1;
}else{
return 0;
}
});
第一个参数为必须的数组,第二个为要比较的数组吧
如果第一个大于第二个就返回1,如果第一个小于第二个为-1,否则为0
问题来了,为什么结果是这样?
array(3) {
[0]=>
array(2) {
["name"]=>
string(6) "张三"
["height"]=>
int(150)
}
[1]=>
array(2) {
["name"]=>
string(12) "王二麻子"
["height"]=>
int(170)
}
[2]=>
array(2) {
["name"]=>
string(6) "李四"
["height"]=>
int(190)
}
}
老哥,因为这是一个二维数组啊,没毛病啊,兄dei
[2]=>第一个下标为2
array(2)下标为2里面有两个数据
分别是["name"]=>
string(6) "李四"
["height"]=>
int(190)
//总结这是一个从小到大的升序哈,比较是为了升序的哈
记住哈,兄弟们1代表不变,-1代表变,代表不变哈