PHP随笔笔记

2018-04-25  本文已影响0人  f095e64ca027
<?php
    $n = 10;            
    if ( $n < 5 && $n++ >10 ) {      
          // do sth...    
     };      
     echo $n;       // 这里因为 $n < 5 为false,所以 $n++ 不会执行,$n 输出为10
?>

|| 同上,用& 、| 没有“短路问题”。

<?php
    $a = 5;
    function sum () {
        global $a;  // 在global关键字声明之后该变量才为全局变量
        echo $a;
    }
    sum();
?>
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);
<?php                                     //                    4
    function demo ($n) {                  //                    3
        echo  $n."<br>";                  //                    2
        if ( $n > 0 )                     //                    1
             demo($n-1);                  //                    0
        else                //输出--->>   //                    -------
             echo  "-------<br>";         //                    0
        echo $n."<br>";                   //                    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
//                                a.不遍历key
<?php
    $user = array(21, "name"=>"vesper", "age"=>18);
    foreach($user as $val) {
        echo "------->".$val."<br>";
    }
?>
//                                b.遍历出key
<?php
    $user = array(21, "name"=>"vesper", "age"=>18);
    foreach($user as $key=>$val) {
        echo $key."------->".$val."<br>";
    }
?>

2.while(){}、list()、each()组合循环遍历
先分别看下list()、和each()能做什么:

//                                list()
<?php
    list($id, $name, $age) = array(21, "vesper", 18);
    echo $name."今年".$age."岁啦!";  //输出:vesper今年18岁啦!
?>
//  1.list() 数组中的每个元素会被赋值给list()中的参数,list()将每个参数zhuan转为变量
//  2.注意数组中的元素个数要与list()参数个数保持一致
//    list(, $name, ) = array(21, "vesper", 18); 这样也是可以的!!!
//  3.list()只能接受索引数组,且按索引下标的顺序,即第一个参数为key第二个参数为value
//                                each()
<?php
    $user = array(21, "name"=>"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循环:

<?php
    $user = array(21, "name"=>"vesper", "age"=>18);
    while(list($key, $value) = each($user)) {
        echo $key."---->".$value."<br>";
    }
?>
// 输出结果
// 0---->21
// name---->vesper
// age---->18

试下下面代码:

<?php
    $user = array(21, "name"=>"vesper", "age"=>18);
    while(list($key, $value) = each($user)) {
        echo $key."---->".$value."<br>";
    }
    while(list($key, $value) = each($user)) {
        echo $key."---->".$value."<br>";
    }
    while(list($key, $value) = each($user)) {
        echo $key."---->".$value."<br>";
    }
// 只输出了一次?
// 0---->21
// name---->vesper
// age---->18
?>

使用数组的内部指针:

//  prev(数组)     前移一位
//  next(数组)     后移一位
//  reset(数组)    重置
//  end(数组)      最后一位
//  current(数组)  当前元素的值
//  key(数组)      当前元素的键
<?php
    $user = array(21, "name"=>"vesper", "age"=>18);
    while(list($key, $value) = each($user)) {
        echo $key."---->".$value."<br>";
    }
    reset($user);
    next($user);
    while(list($key, $value) = each($user)) {
        echo $key."---->".$value."<br>";
    }
    reset($user);
    while(list($key, $value) = each($user)) {
        echo $key."---->".$value."<br>";
    }
    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

    **********************/
?>
上一篇 下一篇

猜你喜欢

热点阅读