数组函数_数组与变量,字符串之间的转换:
1.list($var1,$val2...)
2.extract($arr, $flag)
3.compact(str1,str2...)
4.explode($delimiter, $string, $limit)
5.implode($glue, $arr)
一、list($var1, $var2...) = $arr
其实list()并不是数组函数,而是一个左值的语法结构,也echo 类似
1. 功能: 将索引数组中的元素与指定变量进行绑定
2. 功能: 变量名列表
3. 返回: 与数组元素值对应的独立变量
4. 场景: 将索引数组的内容转为独立变量
5. 注意: 必须是索引数组,关联内容无效
list($name,$school,$education) = ['小龙女','清华大学','博士'];
echo $name.'在'.$school.'上学'.',她的学历是'.$education.'
';
echo "{$name}的学校是{$school},她正在读{$education}
";
二、extract($arr,$flag)
1.功能: 将关联数组转为变量
2.参数: $arr(必),$flag(选)
3.返回: 返回变量数量, 同时会生成与数组元素对应的变量,键名转为变量名,值为变量值
4.场景: 不要对不信任的数据进行转换,例如$_POST / $_GET...用户提交数据
$arr1=['id'=>'10','name'=>'杨过','sex'=>'male','salary'=>8800];
// var_export(extract($arr1)); //打印出来是4
//echo var_export(extract($arr1),true);//打印出来也是4
extract($arr1);
echo $name.'的id是'.$id.',他是'.$sex.',他的工资是'.$salary.'
';
三、compact(str1,str2...)
1.功能: 将变量转为数组,与extract()相反
2.参数: (1)用一个或多个字符串代表变量名, (2)可以使用数组包装变量名来简化
3.返回: 由变量组成的关联数组
4.场景: 组装多个零散变量统一处理,例如做为一条完整记录并存储到数据库中
$name='杨过';
$position='人生巅峰';
$faction='中北';
$array = compact('name','position','faction');
echo ''.var_export($array,true).'
';
//推荐的简化方案: 将多个变量名打包到一个索引数组中统一发送给函数处理
$varName = ['name','faction','position'];
echo var_export(compact($varName),true), '
';
四、explode($delimiter, $string,$limit)
1.功能:将规则字符串转为数组(用一个字符串来分割另一个字符串)
2.参数:$delimiter 分割字符串(必),$string被分割的字符串(必),$limit(选)返回数组元素数量
3.返回:由被分割后的字符串组成的数组
4.场景:大多用于人为创建一些有规律的字符串的处理,例如文件路径,邮箱,姓名等
$lang = 'html,css,javascript,jquery,php,mysql';
//echo explode(',',$lang); //echo 只能打印字符串和整型 var_export() — 输出或返回一个变量的字符串表示。
echo var_export(explode(',',$lang),true).'
';
//限制返回的数组元素的数量,剩下的内容全部放在最后一个元素中
echo var_export(explode(',',$lang,4),true).'
';
//limit为负数,则从被生成的数组尾部删除,-2,则删除2个,其实负数是我们用得最多的场景
echo var_export(explode(',',$lang,-2),true).'
';
五、implode($glue, $arr)
1. 功能: 将数组转为字符串 (用胶水字符$glue)
2. 参数: $glue(可选),$arr(必)
3. 返回: 字符串
$arr = ['首页','公司新闻','公司产品','联系我们'];
echo var_export(implode('|',$arr),true).'
';
//添加a标签,转为导航
echo var_export(
''.implode('|',$arr).'',
true).'
';
//生成一条sql添加语句: 'INSERT INTO 表名 (字段列表) VALUES (值列表)';
//1.先将要添加的记录以 关联数组的方式提供
$staff=['name'=>'DonnieKing','sex'=>'male','age'=>20,'salary'=>10000];
//2.生成语句
$sql = 'INSERT INTO staff';
//3.生成sql语句中的字段列表
$fields = implode("`,`",array_keys($staff));
// echo $fields;
$sql .= '(`'.$fields.'`)';
// echo $sql;
//4.生成sql语句的值列表部分
$value = implode("','",array_values($staff));
$sql .= " VALUES ('".$value."');";
//4.查看生成的sql语句
//INSERT INTO staff(`name`,`sex`,`age`,`salary`) VALUES ('DonnieKing','male','20','10000')
echo $sql, '
';