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