博客列表 >数组与字符串,变量之间的转换,数组元素回调处理for循环遍历关联数组 20180824课后作业

数组与字符串,变量之间的转换,数组元素回调处理for循环遍历关联数组 20180824课后作业

一点蓝的博客
一点蓝的博客原创
2018年08月27日 19:14:28647浏览

本次作业涉及数组函数、语法结构较多,在数组与字符串与变量的转换,数组元素的回调处理上都很重要,有将数组中元素的键值转为变量和赋值的也有将变量和字符串

转为数组的,还有灵活使用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>';

运行实例 »

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

本地查看截图:

0824011.jpg0824012.jpg0824013.jpg

数组元素回调处理作业实例

<?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);

运行实例 »

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

本地查看截图:

0824021.jpg

0824022.jpg

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>';
}

运行实例 »

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

本地截图:

082403.jpg

总结:

1将索引数组中的元素值赋值给变量可以用list(变量名)=[元素值];将关联数组转为变量用extract($array,$flag)(返回值为变量的数量);将变量转为关联数组用compact();explode()j将字符串转为数组;implode()将索引数组转为字符串;指定位置返回指定元素数量用array_splice(数组,设定位置,长度);还有array_chunk(数组,分割宽度)将大数组分割为小数组;将数组用指定的数组或元素填充到指定的长度,用array_pad(原数组,元素长度,指定填充参数值)
2关于数组回调处理,常见语法有:array_filter()处理每个元素的值,返回结果仅为true的元素,多用于删除数组中的空元素;array_walk()处理每个元素的键与值,作业中用到处理格式化能够理解,但用到的第三个参数用法理解很模糊,这里老师的讲解逻辑也有些不清楚,重看也还是理解不透...

3for循环遍历关联数组,我先将关联数组中的键与值单独拿出来重组为两个索引数组,再通过count()来作为遍历条件来完成

4需要记住的语法很多,很仔细的都过了两遍,动手更容易理解,担心后面会忘掉,所以周末自己有手抄笔记,希望能跟上老师的节奏,近两次作业都没能及时完成,希望每天能理解课堂内容并按时完成作业

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议