本次作业涉及数组函数、语法结构较多,在数组与字符串与变量的转换,数组元素的回调处理上都很重要,有将数组中元素的键值转为变量和赋值的也有将变量和字符串
转为数组的,还有灵活使用for循环结合一些常用函数来遍历关联数组的,具体应用方法见实例
数组与字符串与变量之间的转换实例
<?php /** * Created by PhpStorm. * User: suyh93 * Date: 2018/8/27 * Time: 14:25 */ echo '<h3>数组与字符串与变量间的转换</h3>'; echo '<hr><h6>将索引数组中的元素转为变量用: list(赋值变量名) = 索引数组</h6>'; list($company,$products,$money) = ['suyh一点蓝','电脑','3000'];//将数组中元素值赋值给对应变量 echo '今天买了一台',$company,'的',$products,'花了',$money,'<br>'; echo '<hr><h6>将关联数组中的键值转为变量和对应字符串,用:extract(关联数组),返回值为变量数量</h6>'; $company1 = ['time' => 2018, 'name' => 'suyh一点蓝', 'number' => 99]; echo '返回变量的数量为',var_export(extract($company1),true),',测试输出:<br>'; echo '$time = ',$time,'<br>$name = ',$name,'<br>$number = ',$number,'<br>'; echo '<hr><h6>将变量转为关联数组,用:compact(变量名)</h6>'; $ename = 'suyh'; $money = 1000; $age = 25; $weight = '60kg'; $user = compact('ename','money','age','weight'); echo '<pre>',var_export($user,true); echo '<hr><h6>将字符串转为索引数组,用:explode(变量名,限制数组长度和保留字符串数量)</h6>'; $user ='ename,money,age,weight'; echo '<pre>',var_export(explode(',',$user),true),'全部转为值<br>'; echo '<pre>',var_export(explode(',',$user,3),true),'或限制数组长度为3但保留全部字符串<br>'; echo '<pre>',var_export(explode(',',$user,-1),true),'或限制数组长度3且只保留3个字符串<br>'; echo '<hr><h6>将索引数组中的值转为字符串,用:implode(粘合字符串的元素,索引数组)</h6>'; $company2 = ['首页','新闻资讯','产品案例','关于我们','人才招聘']; echo '打印效果:',var_export(implode('|',$company2),true),'<br>'; echo '转为导航链接:','<a href="#">',var_export(implode('</a>|<a href="#">',$company2),true),'</a>'; echo '<hr><h6>非作业内容:熟悉从数组中指定位置返回指定数量的元素,用array_splice(数组,设定位置,指定长度)</h6>'; $num = range(10,100,10);//创建数组 echo print_r($num,true); echo '<pre>',var_export(array_splice($num,6,3),true),'<br>'; echo '<hr><h6>将大数组分割为小数组,用array_chunk(数组,分割宽度)</h6>'; $num2 = range(1,10,1); echo '原数组',print_r($num2,true),'<br>'; echo '切割后',var_export(array_chunk($num2,5),true); echo '<hr><h6>将数组用指定的数组或元素填充到指定的长度,用array_pad(原数组,元素长度,指定填充参数值)</h6>'; $num3 = [10,20,30]; echo '指定元素长度为6,填充参数为666:<br>',var_export(array_pad($num3,6,666),true),'<br>';
运行实例 »
点击 "运行实例" 按钮查看在线实例
本地查看截图:
数组元素回调处理作业实例
<?php /** * Created by PhpStorm. * User: suyh93 * Date: 2018/8/27 * Time: 16:15 */ echo '<h3>数组元素的回调处理</h3>'; echo '<hr><h6>回调处理数组中的每个元素的值,仅返回结果为true的元素,过滤非true元素,语法:array_filter(数组)</h6>'; $num = [666,'',false,true,null,888,'suyh93','好好学习天天向上']; $num1 = array_filter($num); echo '查看仅输出显示为true的数组:<pre>',var_export($num1,true); echo '<hr><h6>处理数组中每个元素的键值,语法:array_walk(数组,函数(匿名),第三个参数(可用))</h6>'; $user = ['name'=>'suyh93','age'=>'25','weight'=>'60kg','money'=> 3000];//创建一个关联数组 echo var_export($user,true),'<br>';//查看 echo '格式化处理:<br>'; array_walk($user,function($value,$key){ echo $key,':',$value,'<br>'; }); echo '<br><h6>第三个参数使用方法示例</h6>'; array_walk($user,function($value,$key,$name){ if($value != $name){ // exit('不是本人无权查看'); }else{ // exit($key.':'.$value.'<br>'); } },'suyh93'); //由于上面的array_walk()第三个参数回调退出,以下内容均不显示,如需查看显示,需注释以上内容; echo '<hr><h6>参数去重复,语法:array_unique(数组)</h6>'; echo var_export(array_unique([11,11,1,3,33,33,2,88,2,77,77,77]),true); echo '<hr><h6>填充元素,语法:array_fill()</h6>'; echo '索引从5开始值为2元素数量为5个',var_export(array_fill(5,5,2)); echo '<hr><h6>随机选择指定数量的元素,语法:array_rand()</h6>'; echo '随机10个元素:',var_export(array_rand(range(1,66),10)); echo '<hr><h6>刷新数组,元素不变,位置随机,语法:shuffle()</h6>'; $num2 = ['suyh','php中文网','90kg','100kg',1000]; shuffle($num2);//刷新 echo var_export($num2);//输出 echo '<hr><h6>数组合并,相同键名覆盖,语法:array_merge(数组1,数组2)</h6>'; $num3 = ['user'=>'suyh','pwd'=>'666666','mobile'=>'18888888888']; $num4 = ['user'=>'admin','pwd'=>'129809','address'=>'HK']; $num5 = array_merge($num3,$num4); echo var_export($num5);
运行实例 »
点击 "运行实例" 按钮查看在线实例
本地查看截图:
for循环遍历关联数组作业实例
<?php /** * Created by PhpStorm. * User: suyh93 * Date: 2018/8/27 * Time: 17:36 */ echo '<h3>for循环遍历关联数组</h3>'; $company = ['name' => 'suyh一点蓝','number' => '58人','time' => '2018','capital' => '1000000元人民币'];//创建关联数组 $c = count($company); echo '查看元素数量',$c,'<br>'; $a1 = array_keys($company); echo '<br>以索引方式返回由键组成的数组:<br><pre>',var_export($a1); $a2 = array_values($company); echo '<br>以索引方式返回由值组成的数组:<br><br><pre>',var_export($a2),'<br><hr><h6>通过索引值来实现for循环遍历关联数组</h6>'; for($i = 0;$i < $c;$i++){ echo $a1[$i],'=>',$a2[$i],'<br>'; }
运行实例 »
点击 "运行实例" 按钮查看在线实例
本地截图:
总结:
1将索引数组中的元素值赋值给变量可以用list(变量名)=[元素值];将关联数组转为变量用extract($array,$flag)(返回值为变量的数量);将变量转为关联数组用compact();explode()j将字符串转为数组;implode()将索引数组转为字符串;指定位置返回指定元素数量用array_splice(数组,设定位置,长度);还有array_chunk(数组,分割宽度)将大数组分割为小数组;将数组用指定的数组或元素填充到指定的长度,用array_pad(原数组,元素长度,指定填充参数值)
2关于数组回调处理,常见语法有:array_filter()处理每个元素的值,返回结果仅为true的元素,多用于删除数组中的空元素;array_walk()处理每个元素的键与值,作业中用到处理格式化能够理解,但用到的第三个参数用法理解很模糊,这里老师的讲解逻辑也有些不清楚,重看也还是理解不透...
3for循环遍历关联数组,我先将关联数组中的键与值单独拿出来重组为两个索引数组,再通过count()来作为遍历条件来完成
4需要记住的语法很多,很仔细的都过了两遍,动手更容易理解,担心后面会忘掉,所以周末自己有手抄笔记,希望能跟上老师的节奏,近两次作业都没能及时完成,希望每天能理解课堂内容并按时完成作业