wampserver 相关问题记录在了我segmentfault上,点击这里。
&& 或 & 、|| 或 | 都可以做逻辑运算。
&& 和 || 会发生“短路问题”,看下面代码:
10 ) {
// do sth...
};
echo $n; // 这里因为 $n < 5 为false,所以 $n++ 不会执行,$n 输出为10
?>
|| 同上,用& 、| 没有“短路问题”。
- PHP全局变量的使用方法。
在PHP中我们无法分辨变量的声明和使用,这点跟其他语言有所区别。若在一个函数类中使用全局变量(可以看做在该函数外部声明的变量),看下面代码:
- PHP 静态变量
1、静态变量不存在堆栈中,而在静态代码段中保存。
2、一个函数多次调用,只会在第一次调用时声明并保存,之后再调用直接在内存中读取使用。
看下面的代码:
function test () {
static $a = 0;
$a++;
echo $a;
}
test();
test();
test();
test();
// 输出 1 2 3 4
- 变量函数*
看下面代码:
function one ($a, $b) {
return $a + $b;
}
function two($a, $b) {
return $a * $a + $b * $b;
}
function three($a, $b) {
return $a * $a * $a + $b * $b * $b;
}
// $s = "one";
// $s ="two"; // 字符串*
$s = "three";
echo "结果是:".$s(1, 2);
- 递归函数*
看下面代码:
"; // 2
if ( $n > 0 ) // 1
demo($n-1); // 0
else //输出--->> // -------
echo "-------
"; // 0
echo $n."
"; // 1
} // 2
demo(4); // 3
?> // 4
// 1、调用demo,输出5
// 2、进行判断,成立
// 3、调用demo,传入4,输出4,再次判断,成立,调用demo...,依次输出了4 3 2 1 0
// 前几部的每次调用demo,demo并没有执行完成,而是接着再次调用demo,当判断不成立时,
// 输出"--------"并且最后被调用的demo将最先被执行完依次输出了0 1 2 3 4
- 数组----遍历*
1.foreach循环遍历数组:
// a.不遍历key
"vesper", "age"=>18);
foreach($user as $val) {
echo "------->".$val."
";
}
?>
// b.遍历出key
"vesper", "age"=>18);
foreach($user as $key=>$val) {
echo $key."------->".$val."
";
}
?>
2.while(){}、list()、each()组合循环遍历
先分别看下list()、和each()能做什么:
// list()
// 1.list() 数组中的每个元素会被赋值给list()中的参数,list()将每个参数zhuan转为变量
// 2.注意数组中的元素个数要与list()参数个数保持一致
// list(, $name, ) = array(21, "vesper", 18); 这样也是可以的!!!
// 3.list()只能接受索引数组,且按索引下标的顺序,即第一个参数为key第二个参数为value
// each()
"vesper", "age"=>18);
$a = each($user);
print_r($a); //输出:Array ( [1] => 21 [value] => 21 [0] => 0 [key] => 0 )
$b = each($user);
print_r($b);// 输出:Array ( [1] => vesper [value] => vesper [0] => name [key] => name )
?>
// 如上代码:
// 1.each()需要一个数组作为参数
// 2.返回值也是一个数组
// 3.返回的数组 0,1,key,value 四个下标是固定的,其中0和key下标是当前参数数组元素的键,
// 1和value下标是当前参数数组元素的值
// 4.默认当前元素就是第一个元素
// 5.执行一次后当前元素就变为第二个元素,依次类推
// 6.直至最后一个元素执行完后,再执行则返回false
综合以上,结合while循环:
"vesper", "age"=>18);
while(list($key, $value) = each($user)) {
echo $key."---->".$value."
";
}
?>
// 输出结果
// 0---->21
// name---->vesper
// age---->18
试下下面代码:
"vesper", "age"=>18);
while(list($key, $value) = each($user)) {
echo $key."---->".$value."
";
}
while(list($key, $value) = each($user)) {
echo $key."---->".$value."
";
}
while(list($key, $value) = each($user)) {
echo $key."---->".$value."
";
}
// 只输出了一次?
// 0---->21
// name---->vesper
// age---->18
?>
使用数组的内部指针:
// prev(数组) 前移一位
// next(数组) 后移一位
// reset(数组) 重置
// end(数组) 最后一位
// current(数组) 当前元素的值
// key(数组) 当前元素的键
"vesper", "age"=>18);
while(list($key, $value) = each($user)) {
echo $key."---->".$value."
";
}
reset($user);
next($user);
while(list($key, $value) = each($user)) {
echo $key."---->".$value."
";
}
reset($user);
while(list($key, $value) = each($user)) {
echo $key."---->".$value."
";
}
reset($user);
echo current($user)."--------->".key($user);
/********输出*********
0---->21
name---->vesper
age---->18
name---->vesper
age---->18
0---->21
name---->vesper
age---->18
21--------->0
**********************/
?>