PHP基础巩固一——数组

前段时间偷懒+速成心态没有记博客笔记,发现它不只是一个备忘,也是一种仪式,让你坚持下去。基础还是要打牢,再简单的语句也要自己敲一遍才踏实。从第39课开始记

一、遍历数组,2中类型的遍历方法

';
}

$arr=array('age'=>28,'height'=>180,'name'=>'lisi');
foreach($arr as $key=>$value){
    echo $key,'~',$value,'
'; } foreach($arr as $b){ echo $b,'
'; } $stu=array('lisi'=>3,'wang'=>5,'zhao'=>6); foreach ($stu as $a=>$b){ $b=$b*2; echo $a,'~',$b; } ?>

二、游标操作
current();next();prev();end();

$arr=array('a','b','c');
echo current($arr);

next($arr);
echo current($arr);

echo end($arr);

prev($arr);
echo current($arr);

reset($arr);
echo current($arr);
echo '
'; while ($v=current($arr)){ echo current($arr); next($arr); } //此方法漏洞之处,此时用each函数来处理 $arr=array(1,2,3,false,4,5); while ($v=current($arr)){ echo current($arr); next($arr); }

三、常用数组函数:很多

$arr=array('a'=>'张龙','b'=>'赵虎','c'=>NULL);
if(isset($arr['c'])){
    echo 'c存在';
}else{
    echo 'c不存在';
}

if(array_key_exists('c',$arr)){
    echo 'c存在';
}else{
    echo 'c不存在';
}

if(in_array('赵虎',$arr)){
    echo '赵虎存在';
}else{
    echo '赵虎不存在';
}

在这里插入图片描述

$arr=array('a','b','c','d');
echo array_push($arr,'e');//往数组尾部加入单元并返回操作后数组长度

echo array_pop($arr);
echo array_pop($arr);

echo array_unshift($arr,'z');
print_r($arr);//zabc

echo array_shift($arr);//弹出头部单元
print_r($arr);

四、案例——小羊繁殖

$arr=array(1,0,0,0,0);
for($i=1;$i<21;$i++){
    array_pop($arr);
    $new=$arr[0]+$arr[2];
    array_unshift($arr,$new);
}
$s=array_sum($arr);
echo '二十年后生了',$s,'只小羊';

$arr=array(1,0,0,0,0);
for($i=1;$i<21;$i++){
    $new=$arr[1]+$arr[3];
    array_pop($arr);
    array_unshift($arr,$new);
}
$s=array_sum($arr);
echo '二十年后生了',$s,'只小羊';

教程上说的答案是第二种,178只,我觉得分歧在于羊是先生了还是先长一岁,不纠结了

五、习题——猴子选大王
n只猴子围坐成一圈,按顺时针方向从1到N编号。然后从一号猴子开始沿顺时针方向从1开始报数,报到M的猴子出局,再从刚刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,成王。
1、用户输入开始时猴子n\m
2、给出猴王的初始编号
算法思路:猴群编为一个数组,把圈的模型转换成头尾相连的数组,如果指针没停下时,经过的猴子从数组头移到数组尾,指针停下,就删了所停在的那个元素处

function king($n,$m){
    
    $arr=array();
    var_dump($arr);
    for($i=1;$i<$n+1;$i++){
        $arr[]=$i;
    }//创建猴子群
    var_dump($arr);
    $i=1;//初始化选猴的点
    while(count($arr)>1){//只要猴子群里还多于一个人,就继续选人过程
        if($i%$m==0){//判断是否属到了数m,之所以用取模运算,是因为第一次数到是一倍,第二次是二倍。。。
            unset($arr[$i-1]);
        }else{
            array_push($arr,$arr[$i-1]);//没数到的话,就把这个猴子放到队尾
            unset($arr[$i-1]);
        }
        $i++;
    }
    return $arr;
}
var_dump(king(5,10));
print_r(king(5,10));

你可能感兴趣的:(网站开发)