1、php中数组元素与字符串的转换在存储数据时经常使用到,而数组元素与变量之间的转换在调用函数时也会经常使用到,也是非常重要的,以下主要通过一些简单的实例,描述了他们之间是如何进行转换到的:
<?php //数组与变量与字符串之间的转换 //1.list() 把数组中的元素转为变量: 用在索引数组上 list($name,$age,$sex) = ['小明','18','男']; echo '姓名:'.$name.'<br>'.'性别:'.$sex.'<br>'.'年龄:'.$age.'<br>'; //2. extract($arr,$flag): 关联数组转为变量 $option = array( 'host' => 'localhost', 'user' => 'root', 'pass' => 1234, 'dbname' => 'php_3', 'port' => 3306, 'charset' => 'utf8' ); //extract():返回变量的数量 echo '共生成了'.extract($option,true).'个变量,<br>'; echo '我的主机是:'.$host.',我的用户名叫:'.$user.',我的密码是:'.$pass.'<br>'; //3.compact(): 将变量转为关联数组 $name = '葫芦娃'; $age = 500; $num = 7; $arr = compact('name','age','num'); echo '<pre>',var_export($arr); //4.explode():将字符串转换数组 $string = 'html,css,js,jquery,php,mysql'; echo var_export(explode(',',$string)),'<br>'; echo var_export(explode(',',$string,3)),'<br>';//从前开始分隔成三个 echo var_export(explode(',',$string,-2)),'<br>';//去掉最后两个 //5.implode($glue, $arr)//将数组转换成字符串 $arr = ['首页','导航','更多','反馈']; echo var_export(implode($arr)),'<br>'; echo var_export(implode('|',$arr)),'<br>'; //添加<a>链接 echo var_export('<a href="#">'.implode('</a>|<a href="#">', $arr)).'</a>'; ?>
点击 "运行实例" 按钮查看在线实例
运行实例截图:
说明:以上主要介绍了如何使用list()函数把索引数组中的元素转换成变量的,通过extract()函数把关联数组转换为变量;
compact(): 将变量转为关联数组;explode():将字符串转换数组;implode($glue, $arr):将数组转换成字符串。
2、以下代码主要介绍了数组元素的回调处理:
<?php // 数组元素的回调处理 // 将一个函数作为参数进行传递 // 1、array_filter($arr,$callback) // 2、array_walk($arr,$callback) //1. array_filter():回调处理数组中的每个元素的值,仅返回结果为true的元素 $arr1 = ['A',0,2,'',4,NULL,'C',false]; echo '<pre>'; echo var_export($arr1).'<br>','共有:'.count($arr1).'个元素'.'<br>'; //0,空字符串,NULL,false都为fasle $arr2 = array_filter($arr1);//此函数适合删除数组中的空元素 echo '新的数组:<br>',var_export($arr2),',共有:',count($arr2),'个元素<br>'; //传入一个回调函数:匿名函数 $arr3 = ['html','css','php']; $arr4 = array_filter($arr3,function ($v){ return $v!== 'css'; }); echo var_export($arr4),'<br>'; //2. array_walk():对关联数组中每个元素的键和值进行处理 $arr5 = ['host' =>'localhost','user'=>'root','pass'=>1234]; echo var_export($arr5).'<br>'; //对数组进行格式化 array_walk($arr5, function($v,$k){ echo $k.':'.$v,'<br>'; }); echo '<br>'; //回调函数的第三个参数的用法 array_walk($arr5, function ($v,$k,$host){ //如果当前用户地址是:loaclhost,则授权登录,否则拒绝 if($v != $host){ exit('无权登录'); }else{ exit($k.':'.$v); } },'localhost'); ?>
点击 "运行实例" 按钮查看在线实例
运行效果截图:
说明:回调函数就是通过 array_filter():回调处理数组中的每个元素的值,仅返回结果为true的元素,通过array_walk():对关联数组中每个元素的键和值进行处理;其中回调函数的第三个参数的用法可以起到限制权限的作用。
3、以下代码实现了使用for循环遍历一个关联的数组:
<?php //for 循环遍历一个关联的数组 $option = array( 'host' => 'localhost', 'user' => 'root', 'pass' => 1234, 'dbname' => 'php_3', 'port' => 3306, 'charset' => 'utf8' ); for($i=0;$i<count($option);$i++){ echo key($option)." ". ' => '." ".current($option).'<br>'; next($option); } ?>
点击 "运行实例" 按钮查看在线实例
运行效果截图:
说明:for循环遍历数组,关键是在于如何一项一项的取出数组中每个键和对应的每个值,此处用到了数组中指针的操作,每次循环指针往后移动一个位置,知道遍历完成。
总结:
(1)数组与变量与字符串之间的转换主要介绍了一下几种方法:
1.list() 把数组中的元素转为变量: 用在索引数组上
2. extract($arr,$flag): 关联数组转为变量
3.compact(): 将变量转为关联数组
4.explode():将字符串转换数组
5.implode($glue, $arr) :将数组转换成字符串
(2)数组元素的回调处理,主要使用到了一下两个关键的函数:array_filter($arr,$callback)和array_walk($arr,$callback),其中array_filter():回调处理数组中的每个元素的值,仅返回结果为true的元素,此函数适合删除数组中的空元素;array_walk():对关联数组中每个元素的键和值进行处理,第三个参数可以实现添加权限的功能。
(3)for循环遍历关联数组是对数组中键值的操作的一个总结,灵活运用所学到的知识,达到活学活用的效果。