2-6 编程练习

2-6 编程练习

<?php

$letter=[];

$l=[];

//a-n区间的字母按题目要求循环入栈,每一次入二退一,这里用循环该怎么实现呢?

for($i='a';$i<='n';$i++){

    array_push($letter,$i,$i++);

    $out=array_pop($letter);

    array_push($l,$out);

    //bdfhjl

}


//输出循环进栈操作过后的数组$letter


print_r($l);

print_r($letter);

//执行三次出队列操作,这里是不是也应该使用循环呢?又应该使用哪一个数组函数操作?

for($i=0;$i<3;$i++){

    array_shift($letter);

}

//unset($letter[0],$letter[1],$letter[2]);

//输出出队列之后的数组$letter

print_r($letter);

?>

//////////////////

  1. 如果我想把移出的元素放到新数组里输出,但是为何$out得到的是acegikm,不是bdfhjl

2.三次出队有哪个函数可以实现?unset()?不过0-2键值也会被切掉

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
imooc_澈 2017-11-29 10:51:27

您好,

第一次将a,b压入栈,循环里应该使用:array_push($letter,$i,++$i);而不是array_push($letter,$i,$i++);$i此时等于a,而$i++的值也是a,执行过后$i的值才会自加1,这样会导致压入的是a,a,而不是a,b,那弹出来的也就不是b,而是一个a了。

另外,如果您想使用新数组接收弹出的数组,可以用$l[] = array_push($out),array_push函数只接收一个数组参数,返回被弹出的数组元素。修正过后打印$letter和$l就会看到以下结果:

Array
(
   [0] => a
   [1] => c
   [2] => e
   [3] => g
   [4] => i
   [5] => k
   [6] => m
)
Array
(
   [0] => b
   [1] => d
   [2] => f
   [3] => h
   [4] => j
   [5] => l
   [6] => n
)

三次出队列使用for循环实现,array_shift函数。

for($j=0;$j<3;$j++){

      array_shift($letter);

    }

打印出队列后的$letter:

Array
(
   [0] => g
   [1] => i
   [2] => k
   [3] => m
)

如果解决了您的问题,请采纳,祝学习愉快~


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师