一.数组的遍历
<?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', )点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号