PHP基础巩固一——数组

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

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

<?php
$arr=array('a','b','c','d','e');
for($key=0;$key<count($arr);$key++){
    echo $arr[$key] , '<br/>';
}

$arr=array('age'=>28,'height'=>180,'name'=>'lisi');
foreach($arr as $key=>$value){
    echo $key,'~',$value,'<br/>';
}
foreach($arr as $b){
    echo $b,'<br />';
}
$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 '<br />';

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));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值