Correction status:Uncorrected
Teacher's comments:
一.数组的遍历
<?php /** * 1数组分类 * 2.数组定义 * 3.数组遍历 */ //1. 数组分为二类:索引数组,关联数组 $arts = ['亢龙有悔','飞龙在天','见龙在田','鸿渐于陆','潜龙勿用','突如其来']; // 索引数组 //索引从0开始计数 //echo $arts[0],'<br>'; // 键名是数字索引 //echo $arts[1],'<br>'; //echo $arts[5],'<br>'; //关联数组 $swordsman = ['name'=>'郭靖','position'=>'金刀驸马','skill'=>'降龙十八掌']; //echo $swordsman['name'],'<br>'; // 键名是字符串 //echo $swordsman['skill'],'<br>'; // 键名是字符串 //2.数组定义 // 1. 整体创建 //$a = '见龙在田'; //$b = ['鸿渐于陆','潜龙勿用','突如其来']; //$arts = ['亢龙有悔','飞龙在天',$a,$b]; // 索引数组 //echo '<pre>', print_r($arts,true); //2.逐个来创建 $swordsman = []; //声明一个空数组 $swordsman['name'] = '杨康'; //通过追加的方式添加到新数组中 $swordsman['position'] = '金国小王爷'; $swordsman['skill'] = '九阴白骨爪'; //echo '<pre>', print_r($swordsman,true); //echo '<hr>'; //3. 数组的遍历 //for () $res1 = ''; for ($i=0; $i<count($arts); $i++) { $res1 .= $arts[$i].'---'; } //echo rtrim($res1,'---'),'<hr>'; //while() $res2 = ''; $i=0; while ( $i<count($arts)) { $res2 .= $arts[$i].'---'; $i++; } //echo rtrim($res2,'---'),'<hr>'; // do~while() // foreach() // $value 叫循环变量,每一次数组将要输出的当前的元素赋值给$value //foreach ($swordsman as $key=>$value) { // echo '['.$key,'] => ',$value,'<br>'; //} echo '<hr>'; // list()和each() //while(list($key, $value) = each($swordsman)) { // echo '['.$key,'] => ',$value,'<br>'; //} $arts = ['亢龙有悔','飞龙在天','见龙在田','鸿渐于陆','潜龙勿用','突如其来']; // 索引数组 //数组的内部指针 reset($arts); // 将指针复位,指向第一个元素 //获取当前元素的键名和值 echo key($arts),'-----',current($arts),'<br>'; //下移指针 next($arts); //获取当前元素的键名和值 echo key($arts),'-----',current($arts),'<br>'; //最后一个 end($arts); //获取当前元素的键名和值 echo key($arts),'-----',current($arts),'<br>'; reset($arts); // 将指针复位,指向第一个元素 //获取当前元素的键名和值 echo key($arts),'-----',current($arts),'<br>';
点击 "运行实例" 按钮查看在线实例
二:
1. print_r($arr, $bool)
2. var_dump($var1,$var2....)
3. var_export($arr,true),输出的就是字符串表示: 就是创建这个数组的php语句
二维数组的输出: $arr=array( array('a'=>'aa','b'=>'bbb','c'=>'ccc'), array('a'=>'ddd','b'=>'eee','c'=>'fff'), array('a'=>'gg','b'=>'hh')); print_r($arr); //print_r输出: //Array ( [0] => Array ( [a] => aa [b] => bbb [c] => ccc ) [1] => Array ( [a] => ddd [b] => eee [c] => fff ) [2] => Array ( [a] => gg [b] => hh ) ) var_dump($arr); //var_dump输出: /* array (size=3) 0 => array (size=3) 'a' => string 'aa' (length=2) 'b' => string 'bbb' (length=3) 'c' => string 'ccc' (length=3) 1 => array (size=3) 'a' => string 'ddd' (length=3) 'b' => string 'eee' (length=3) 'c' => string 'fff' (length=3) 2 => array (size=2) 'a' => string 'gg' (length=2) 'b' => string 'hh' (length=2) */ 下面在给出一个json格式的输出: $arr=array(array('a'=>'aa','b'=>'bbb','c'=>'ccc'), array('a'=>'ddd','b'=>'eee','c'=>'fff'), array('a'=>'gg','b'=>'hh')); $arra=json_encode($arr); print_r($arra); //print_r输出: [{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}] var_dump($arra); //var_dump输出: string '[{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]' (length=84)
点击 "运行实例" 按钮查看在线实例
三.数组的常用操作函数
<?php $arr1 = ['id'=>1, 'name'=>'杨过','sex'=>'male','salary'=>8000]; /** * 1. print_r($arr, $bool) * 2. var_dump($var1,$var2....) * 3. var_export($arr,true),输出的就是字符串表示: 就是创建这个数组的php语句 */ // $res = print_r($arr1,true); //echo '<pre>',$res,'<br>'; //var_dump($arr1); //var_export($arr1); // //1. array_values() 返回所有的值的数组 // echo '<pre>',print_r(array_values($arr1),true); // echo '<pre>', var_export(array_values($arr1),true); // //2. array_keys() 返回所有键的数组 // echo '<pre>', var_export(array_keys($arr1),true),'<br>'; // //3. in_array() 判断是否在数组中 // echo in_array('male1', $arr1) ? '存在' : '<span style="color:red">不存在</span><br>'; // //4. array_key_exists() 判断键值是否存在 // echo array_key_exists('name2', $arr1) ? '存在' : '<span style="color:red">不存在</span><br>'; // //5. array_flip() 键值相互调换 // echo '<pre>', var_export(array_flip($arr1),true); // //6. array_reverse() 数据值相反 echo '<pre>', var_export(array_reverse($arr1),true);
点击 "运行实例" 按钮查看在线实例
四. 数组与变量与字符串之间的转换
1.list() 把数组中的元素转为变量: 用在索引数组上
list($name, $course, $grade) = ['小龙女','php',80]; //$name = '小龙女'; //$course = 'php'; //$grade = 80; echo $name, '的 "', $course, '"课程的成功是: ', $grade, '<hr>';
点击 "运行实例" 按钮查看在线实例
2. extract($arr, $flag): 关联数组转为变量
$arr1 = ['id'=>1, 'name'=>'杨过','sex'=>'male','salary'=>8000]; //extract():返回变量的数量 echo '共生成了:',var_export(extract($arr1),true),'个变量:<br>'; //$id=1; $name='杨过'; $sex='male'; $salary=8000; echo '我的id:',$id,',姓名:',$name,',性别:',$sex,',工资: ',$salary,'元<hr>';
点击 "运行实例" 按钮查看在线实例
3.compact(): 将变量转为关联数组
$name = '南'; $faction = '会'; $position = '主'; $arr = compact('name','faction','position'); echo var_export($arr,true),'<hr>';
点击 "运行实例" 按钮查看在线实例
4.explode():将字符串转换数组
$lang = 'html,css,javascript,jquery,php,mysql'; echo var_export(explode(',',$lang)),'<br>'; echo var_export(explode(',',$lang,3)),'<br>'; echo var_export(explode(',',$lang,-2)),'<br>';//最常用
点击 "运行实例" 按钮查看在线实例
5.数组的切割 和分块
// array_slice():从数组中指定位置,返回指定数量的元素 $arr = [10,20,30,40,50,60]; //$arr = range(10,60,10); echo '<pre>'; //print_r($arr); // 0表示从第一个元素开始输出 echo var_export(array_splice($arr,0),true),'<br>'; // 输出结果 // array ( // 0 => 10, // 1 => 20, // 2 => 30, // 3 => 40, // 4 => 50, // 5 => 60, // ) //从2开始 echo var_export(array_splice($arr, 2,3),true),'<br>'; // 输出结果 // array ( // 0 => 30, // 1 => 40, // 2 => 50, // )
点击 "运行实例" 按钮查看在线实例
$arr = [10,20,30,40,50,60]; //$arr = range(10,60,10); // -2从尾巴开始删除的元素的数量 echo var_export(array_splice($arr, 3,-2),true),'<br>'; //输出结果 // array ( 0 => 40, )
点击 "运行实例" 按钮查看在线实例
2.分块 array_chunk(): 将大数组分割为小数组
$arr = [10,20,30,40,50,60]; //$arr = range(10,60,10); echo var_export(array_chunk($arr,3),true),'<br>'; //输出结果 // array ( 0 => array ( 0 => 10, 1 => 20, 2 => 30, ), 1 => array ( 3 => 40, 4 => 50, 5 => 60, ), )
点击 "运行实例" 按钮查看在线实例
3.array_pad(),将数组用指定的数组填充到指定的长度
$arr = [50,60,70]; echo var_export(array_pad($arr, 6, 99),true),'<br>'; echo var_export(array_pad($arr, -5, 'php'),true),'<br>'; //输出结果 // array ( 0 => 50, 1 => 60, 2 => 70, 3 => 99, 4 => 99, 5 => 99, ) // array ( 0 => 'php', 1 => 'php', 2 => 50, 3 => 60, 4 => 70, )
点击 "运行实例" 按钮查看在线实例
五.数组函数的回调
. array_filter($arr, $callback)
//1. array_filter():回调处理数组中的每个元素的值,仅返回结果为true的元素 $arr1 = [5,0,'',20,null,88,false,'php']; echo '<pre>'; echo '原始数组',var_export($arr1,true),',共有:',count($arr1),'个元素<hr>'; // ''空字符串,0,null,false: false $arr2 = array_filter($arr1); echo '新数组',var_export($arr2,true),',共有:',count($arr2),'个元素<hr>'; 原始数组array ( 0 => 5, 1 => 0, 2 => '', 3 => 20, 4 => NULL, 5 => 88, 6 => false, 7 => 'php', ),共有:8个元素 新数组array ( 0 => 5, 3 => 20, 5 => 88, 7 => 'php', ),共有:4个元素
点击 "运行实例" 按钮查看在线实例
$arr3 = ['html','css','javascript']; $arr4 =array_filter($arr3, function ($value){ return $value !== 'css'; }); echo var_export($arr4),'<hr>'; //输出结果 array ( 0 => 'html', 2 => 'javascript', )
点击 "运行实例" 按钮查看在线实例
$arr = ['name'=>'admin','email'=>'admin@php.cn']; echo var_export($arr, true), '<hr>'; //格式化 array_walk($arr, function (&$value, $key) { echo $key,':',$value,'<br>'; }); echo '<hr>'; //输出结果 array ( 'name' => 'admin', 'email' => 'admin@php.cn', ) name:admin email:admin@php.cn
点击 "运行实例" 按钮查看在线实例
$arr = ['name'=>'admin','email'=>'admin@php.cn']; array_walk($arr, function (&$value, $key, $name) { //如果当前的用户名是:admin,则授权查看,否则拒绝 if ($value != $name) { exit('无权查看'); } else { exit($key.':'.$value); } },'admin1'); //输出 结果 无权查看
点击 "运行实例" 按钮查看在线实例
$arr = ['name'=>'admin','email'=>'admin@php.cn']; array_walk($arr, function (&$value, $key, $name) { //如果当前的用户名是:admin,则授权查看,否则拒绝 if ($value != $name) { exit('无权查看'); } else { exit($key.':'.$value); } },'admin'); //输出结果 name:admin
点击 "运行实例" 按钮查看在线实例
echo '<pre>'; echo var_export(array_unique([1,2,2,3,3,4,4,5,6])); echo var_export(array_fill(2,10,3)); //输出结果 array ( 0 => 1, 1 => 2, 3 => 3, 5 => 4, 7 => 5, 8 => 6, ) array ( 2 => 3, 3 => 3, 4 => 3, 5 => 3, 6 => 3, 7 => 3, 8 => 3, 9 => 3, 10 => 3, 11 => 3, )
点击 "运行实例" 按钮查看在线实例
echo var_export(array_rand(range(1,33),7)); echo "<hr>"; echo var_export(array_rand(range(1,16),3)); echo "<hr>"; //输出结果 array ( 0 => 2, 1 => 8, 2 => 9, 3 => 13, 4 => 14, 5 => 23, 6 => 24, ) array ( 0 => 3, 1 => 9, 2 => 10, )
点击 "运行实例" 按钮查看在线实例
$arr = ['东邪','西毒','南帝','北丐']; shuffle($arr); // 验证码 echo var_export($arr); //输出乱序 array ( 0 => '北丐', 1 => '南帝', 2 => '西毒', 3 => '东邪', )
点击 "运行实例" 按钮查看在线实例
//array_merge():合并多个数组,相同键名互相覆盖 $db_sys = ['host'=>'127.0.0.1','user'=>'root','pass'=>'root']; $db_user = ['host'=>'localhost', 'pass'=>sha1('123456')]; $res=array_merge($db_sys, $db_user); echo var_export($res); //输出结果 array ( 'host' => 'localhost', 'user' => 'root', 'pass' => '7c4a8d09ca3762af61e59520943dc26494f8941b', )
点击 "运行实例" 按钮查看在线实例