Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:php中的数组功能非常强大, 每多知道一个数组, 就相当于多了一种杀敌的武器
1.索引数组:
默认从0开始编号
$goods = ['001', '智能手机', '华为', '2568'];
printf('<pre>%s</pre>',print_r($goods, true));
echo $goods[2];
2.关联数组:
$goods = ['id'=>'001', 'name'=>'智能手机', 'model'=>'华为', 'price'=>'2568'];
printf('<pre>%s</pre>',print_r($goods, true));
echo $goods['name'];
逐个遍历,也叫数组指针
current(): 值
key(): 键
$stu = [
'id' => '001',
'name' => '张三',
'age' => 18,
'grade' => 78,
];
// next($stu):指针下移一位,指向下一个元素
next($stu);
printf('[ %s ] => %s', key($stu), current($stu));
next($stu);
printf('[ %s ] => %s', key($stu), current($stu));
// prev($stu): 指针前移
prev($stu);
printf('[ %s ] => %s', key($stu), current($stu));
// reset($stu): 指针复位
reset($stu);
printf('[ %s ] => %s', key($stu), current($stu));
foreach():自动生成
可以省去手工步骤
foreach ($stu as $value) {
echo $value;
}
键名函数:
$arr = ['id'=>001, 'name'=>'张三', 'email'=>'zhangsan@qq.cn'];
function array_keys_2($arr) {
$keys = [];
while ($key=key($arr)){
$keys[] = $key;
next($arr);
}
return $keys;
}
// array_keys():直接返回键名组成的数组
print_r(array_keys_2($arr));
和值相关的的函数:
array_search():在数组中查找指定的元素
array_unique():去掉重复的
$arr = [3 => 10, 9 => 20, 0 => 'html', 'id' => 'css', 20 => 20,30];
printf('<pre>%s</pre>',print_r($arr,true));
function array_values_1($arr) {
$values = [];
foreach ($arr as $value) {
$values[] = $value;
}
return $values;
}
printf('<pre>%s</pre>',print_r(array_values($arr),true));
var_dump(array_search('css', $arr));
print_r(array_unique($arr));
数组求和
array_sum: 数组求和
$arr = [10,20,30,55,11];
function array_sum_1(...$arr) {
$sum = 0;
foreach ($arr as $c) {
$sum += $c;
}
return $sum;
}
echo array_sum($arr);
栈
仅允许在数组一段进行新增或删除的操作,后进先出
$stack = [];
// 在尾部操作
// array_push():元素进栈
echo array_push($stack, 10);
echo array_push($stack, 30);
echo array_push($stack, 50, 70);
// array_pop:元素出栈
echo array_pop($stack);
echo array_pop($stack);
printf('<pre>%s</pre>', print_r($stack, true));
// 在头部操作
// array_unshift():元素进栈
echo array_unshift($stack, 'css');
printf('<pre>%s</pre>', print_r($stack, true));
// array_shift()元素出栈
echo array_shift($stack);
printf('<pre>%s</pre>', print_r($stack, true));
array_slice()
从数组中取出一部分元素
$stu = ['id' => 201, 'name' => '张三丰', 'age' => '50'];
// 取出第一个
$res = array_slice($stu, 0,1);
// 如果想取倒数的就只需要负数就可以了
printf('<pre>%s</pre>',print_r($res,true));
array_splice()
删除元素,但是可以利用这个功能实现增加
返回值就是被删除的元素组成的数组
$arr = [10, 20, 30, 55, 66, 77, 40, 66];
printf('<pre>%s</pre>',print_r($arr,true));
// 删除
$res = array_splice($arr,3, 2);
printf('<pre>%s</pre>',print_r($res,true));
// 增加
$res = array_splice($arr,3, 2, [147,369]);
printf('<pre>%s</pre>',print_r($res,true));
printf('<pre>%s</pre>',print_r($arr,true));