博主信息
博文 17
粉丝 0
评论 0
访问量 13690
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
变量、数组、字符串相关知识_2018-08-26_17:30提交
斯达融的博客
原创
880人浏览过

作业:

实例

<?php
echo "<pre>";
echo "<h3>1、编程:数组与字符串、变量之间的转换</h3><hr>";
echo "<h4>索引数组转变量 list()</h4>";
$namelist=['张三','李四','王五','赵六','周七'];
list($name1,$name2,$name3,$name4,$name5)=$namelist;
echo "name1='{$name1}'<br>name2='{$name2}'<br>name3='{$name3}'<br>name4='{$name4}'<br>name5='{$name5}'<br>";
echo "<h4>关联数组转变量 extract()</h4>";
$user=['name'=>'张三','sex'=>'男','from'=>'中国湖北'];
extract($user);
echo "name='{$name}'<br>sex='{$sex}'<br>from='{$from}'<br>";
echo"<h4>将变量转为关联数组 compact() </h4>";
$name='李四';
$sex='女';
$from='湖北宜昌';
$userinfo=compact('name','sex','from');
echo var_export($userinfo,true);
echo "<h4>将字符串裂变为字符串数组 explode()</h4>";
$namelist="张三,李四,王五,赵六,周七";
$namearray=explode(',',$namelist);
echo   var_export($namearray,true);
echo "<h4>将数组连接为字符串 implode()</h4>";
$namelist=['首页','简介','动态','产品','联系我们'];
echo var_export(implode("|",$namelist),true)."<br>";
echo var_export('<a href="#">'.implode('</a>|<a href="#">',$namelist).'</a>')."<br>";

echo "<hr><h3>2.编程: 数组元素的回调处理 array_filter()  array_walk() </h3>";
$array1 = ['',null,3,6,53,'staroom',true,false];
echo '数组array1: ',var_export($array1,true),',共有:',count($array1),'个元素<br>';
$array2=array_filter($array1);
echo "新数组array2:",var_export(array_filter($array2)),count($array2),'个元素<br>';
$array3=array_filter($array1,function($val){
  return $val >0;
});
echo "数组array3:",var_export($array3,true),count($array3),"个元素<br>";

$keyinfo=[['name'=>'staroom','group'=>'admin'],['name'=>'user1','group'=>'user']];
foreach ($keyinfo as $arr) {
  array_walk($arr,function(&$val,$key){
    echo "{$key} : {$val}<br> ";
  });
  array_walk($arr,function(&$val,$key,$group){
  echo ($val==$group?"passed":"unpassed"),"<br>";
  },'admin');
}
echo "<hr><h3>3.编程: 用for()循环来遍历关联数组</h3><hr>";
$userlist=[];
for($i=0;$i<10;$i++){
  $user=[];
  $user['name']="name{$i}";
  $user['group']="group{$i}";
  $userlist[]=$user;
}
for($i=0;$i<10;$i++){
  echo var_export($userlist[$i],true),"<br>";
  echo "[name]=>",$userlist[$i]['name'],"<br>";
  echo "[group]=>",$userlist[$i]['group'],"<br>";
  echo "<hr>";
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

二、问题: array_walk() 处理数组键值对时,其运行逻辑还未弄清楚,不能达到预期结果。相关测试代码:

实例

<? php
$keyinfo=[['name'=>'staroom','group'=>'admin'],['name'=>'user1','group'=>'user']];
foreach ($keyinfo as $arr) {
  array_walk($arr,function(&$val,$key){
    echo "{$key} : {$val}<br> ";
  });
  array_walk($arr,function(&$val,$key,$group){
  echo ($val==$group?"passed":"unpassed"),"<br>";
  },'admin');
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

点击 "运行实例" 按钮查看在线实例

三、问题解决:经同学指点,已明白array_wlak() 的用法,现练习如下:

实例

<?php
echo "<h3>for循环array_walk() 练习</h3>";
echo "<p><b>题目:</b>有一密闭房间,内有100盏灯,开关编号1-100;有100人,编号1-100;开始房间是全黑的。现在每人做如下操作:将自己编号整数倍的灯的开关按一次,问:最后,房间里有哪些灯是亮着的?</p>";

echo "<hr>";

$lamplist=[];
$personlist=[];

for($i=0;$i<100;$i++){
$lamplist[$i+1]='off';
$personlist[$i+1]='undo';
}

//开始
 for($i=1;$i<101;$i++){
   for($k=1;$k<101;$k++){
     if($k%$i==0){
       $lamplist[$k]= $lamplist[$k]=='on'?'off':'on';
     }
   }
   $personlist[$i]='do';
 }

echo "最后还亮着的灯有:<br>";

array_walk($lamplist,function(&$value,$key,$state){
  echo $value==$state?$key."号灯<br>":"";
},'on');

运行实例 »

点击 "运行实例" 按钮查看在线实例


批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学