作业:
1、代码演示:
<?php
// 和数组键有关的函数
$arr = ['id'=>1, 'username'=>'admin', 'email'=>'admin@php.cn'];
echo '<pre>'.print_r($arr,true).'</pre>';
echo '<pre>'.print_r(array_keys($arr),true).'</pre>';
var_dump(array_key_exists('id',$arr));
echo '<br>';
var_dump(array_key_last($arr));
echo '<br>';
var_dump(array_key_first($arr));
echo '<hr>';
// 和数组有关的函数
$arr = [3=>10, 9=>20, 0=>'html', 'id'=>'css', 20=>20, 10=>30];
echo '<pre>'.print_r($arr,true).'</pre>';
echo '<pre>'.print_r(array_values($arr),true).'</pre>';
var_dump(in_array(20,$arr));
echo '<br>';
var_dump(array_search('css',$arr));
echo '<pre>'.print_r(array_unique($arr),true).'</pre>';
echo '<hr>';
// 统计数组统计有关的函数
var_dump(count($arr));
echo '<br>';
var_dump(array_count_values($arr));
echo '<br>';
$arr = [10, 20, 30];
echo array_sum($arr);
echo '<br>';
echo array_product($arr);
echo '<hr>';
//栈和对列的操作:栈后进先出,队列先进先出
$stack=[];
array_push($stack,0,1);
array_push($stack,[2,3,4]);
echo '<pre>'.print_r($stack,true).'</pre>';
array_pop($stack);
echo '<pre>'.print_r($stack,true).'</pre>';
echo '……………………………………………………………………………………………………';
array_unshift($stack,'one','two');
echo '<pre>'.print_r($stack,true).'</pre>';
array_shift($stack);
echo '<pre>'.print_r($stack,true).'</pre>';
echo '<hr>';
$arr = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];
echo '<pre>'.print_r($arr,true).'</pre>';
// sort($arr);
// echo '<pre>'.print_r($arr,true).'</pre>';
// rsort($arr);
// echo '<pre>'.print_r($arr,true).'</pre>';
// asort($arr);
// echo '<pre>'.print_r($arr,true).'</pre>';
// arsort($arr);
// echo '<h1>arsort</h1>';
// echo '<pre>'.print_r($arr,true).'</pre>';
$arr = ['e'=>10, 'a'=>30, 'p'=>50];
ksort($arr);
echo '<pre>'.print_r($arr,true).'</pre>';
krsort($arr);
echo '<pre>'.print_r($arr,true).'</pre>';
$arr = ['img1.jpg', 'img5.jpg', 'img10.jpg', 'img8.jpg'];
echo '<pre>'.print_r($arr,true).'</pre>';
natsort($arr);
echo '<pre>'.print_r($arr,true).'</pre>';
echo '<hr>';
$arr = ['id'=>109, 'username'=>'peter', 'age'=> 27, 'salary'=>99999];
print_r($arr);
shuffle($arr);
// print_r($arr);
// print_r(array_reverse($arr));
// print_r(array_flip($arr));
print_r($arr); echo '<hr>';
1、演示结果图:
2、代码:
<?php
$arr= ['Apple', 'Dell', 'Lenovo', 'Hp', 'ThinkPad', 'Huawei', 'Xiaomi'];
// print_r($arr);
// echo '<br>';
// print_r(array_slice($arr,1,3));
// print_r(array_splice($arr,3));
// print_r(array_splice($arr,3,2));
// print_r(array_splice($arr,3,2,['Acer','ASUS']));
// print_r(array_rand($arr,3));默认为一个;
$arr = [
['id'=>101, 'name'=>'jack', 'age'=>20],
['id'=>102, 'name'=>'mike', 'age'=>30],
['id'=>103, 'name'=>'pony', 'age'=>40],
];
// print_r($arr);
// echo '<hr>';
// print_r(array_column($arr,'name'));
// print_r(array_column($arr,'age','name'));
$arr = ['type'=>'mysql', 'host'=>'localhost', 'username'=>'root', 'password'=>'root'];
$arr1 = ['host'=>'127.0.0.1', 'username'=>'admin','age'=>5];
$arr2 = ['username'=>'peter', 'password'=>'123456'];
print_r(array_replace($arr,$arr1));
print_r(array_replace($arr,$arr1,$arr2));
echo '<hr>';
$arr1 = [10, 20, 30, 40, 60];
$arr2 = [1, 20, 30, 5];
print_r(array_intersect($arr1, $arr2)); echo '<hr>';
// array_diff(),保留第一个数组中不一样的;
print_r(array_diff($arr1,$arr2));
echo '<hr>';
// array_combine():通过合并两个数组来创建一个新数组(第一个数组元素界面);两个数组的数量一样;
$keys = ['type', 'host', 'dbname', 'username', 'password'];
$values = ['mysql', 'localhost', 'phpedu', 'root', 'root'];
print_r(array_combine($keys,$values));
echo '<hr>';
//把一个或多个数组合并为一个新数组;
$keys = ['type', 'host', 'dbname', 'username', 'password'];
$values = ['mysql', 'localhost', 'phpedu', 'root', 'root'];
$arr2 = [1, 20, 30, 5];
// print_r(array_merge($keys,$values,$arr2));
echo '<hr>';
$arr1 = [10, 20, 30, 40, 60,21,23,44,56,43,56,12];
echo '<pre>'.print_r(array_chunk($arr1,3)).'</pre>';
2、演示结果:
3、代码演示:
<?php
// print_r(array_fill(0,7,'A'));
// print_r(array_fill(2,7,'A'));
// echo '<hr>';
//
// print_r(array_fill_keys($keys, 'hello')); echo '<hr>';
// $arr = ['apple', 'dell', 'thinkpad'];
// print_r(array_pad($arr, 6, 'computer'));
$values = ['id', 'name', 'age', 'hoppy'];
list($id,$name,$age,$hoppy)=$values;
echo "$id,$name,$age,$hoppy";
$str=implode('=',$values);
echo $str;
print_r(explode('=',$str));
$data = ['id'=>1,'name'=>'ldy','age'=>31,'hoppy'=>'跑步'];
extract($data);
echo $id,$name,$age,$hoppy;
$id = 99;
$name = 'Peter Zhu';
$job = 'Lecture';
$data1=compact('id','name','job');
print_r($data1);
echo '<hr>';
$keys = ['host', 'username', 'password'];
$values = ['localhost', 'admin', '666888'];
$result = array_map(function ($value1, $value2) {
return [$value1=>$value2];
}, $keys, $values);
echo '<pre>'.print_r($result,true).'</pre>';
// $results=[];
// foreach($result as $arr){
// $results[current($arr)]=key($arr);
// }
// // print_r($result);
// print_r($results);
$res = array_reduce($result, function ($prev, $current) {
// 获取当前元素的键值
$key = key($current);
$value = current($current);
// 拼装成一个元素并返回
$prev[$key] = $value;
return $prev;
});
print_r($res);
3、演示结果:
作业二 常用数组函数大全
1. 键名相关
array_keys
: 获取所有键名组成的数组array_key_exists
: 是否存在指定键名array_key_last
“ 获取最后一个键名php7.3+array_key_first
: 获取第一个键名php7.3+
2. 与值相关
array_values
: 返回数组中所有值组成的数组in_array
: 检查数组中是否存在某个值array_search
: 搜索指定的值,返回键名array_unique
: 删除重复的值
3. 与统计相关
count
: 统计元素数量或对象属性数量array_count_values
: 统计所有值的出现频率
4. 与计算相关
array_sum
对数组中所有值求和array_product
: 计算数组中所有值的乘积
5. 栈与队列
array_push
: 从尾部添加一个或多个元素array_pop
: 从尾部删除最后一个元素array_unshift
: 从头部添加一个或多个元素array_shift
: 从头部删除一个元素
6. 排序
6.1 对值排序
sort
: 按值升序排序, 索引重排asort
: 按值升序排序, 索引保持不变rsort
: 按值降序排序, 索引重排arsort
: 按值降序排序, 索引保持不变
6.2对键排序
ksort
: 按键名升序排序krsort
: 按键名降序排序
6.3 自定义排序
usort
: 自定义函数对值进行排序uasort
: 自定义函数对值排序并保持索引不变uksort
: 自定义函数对键名进行排序
6.4 自然排序
natsort
: 支持数字型字符串排序natcasesort
: 不区分大小写
6.5 乱序反转
shuffle
: 随机打乱一个数组的顺序array_flip
: 交换数组中的键和值array_reverse
: 反转一个数组
7. 查询与替换
array_slice
: 从数组中取出一部分array_splice
: 去掉数组中一部分并用其它值代替array_rand
: 从数组中随机取出一个或多个元素的键名array_column
: 获取多维数组中一列组成的新数组array_replace
使用后面数组的值替换第一个数组的值array_replace_recursive
使用传递的数组递归替换第一个数组的元素array_intersect
: 计算数组的交集array_intersect_assoc
: 返回数组交集,键名也做比较array_diff
:返回数组的差集array_diff_assoc
: 返回数组差集,键名也做比较
8. 分割与合并
array_combine
: 通过合并两个数组来创建一个新数组array_merge
: 把一个或多个数组合并为一个数组array_chunk
: 将一个数组分割成多个子数组
9. 数组指针
current
: 获取当前元素的值key
: 获取当前元素的键名next
: 将数组中的内部指针向前移动一位prev
: 将数组的内部指针倒回一位end
: 将数组的内部指针指向最后一个单元reset
: 将数组的内部指针指向第一个单元
10. 自动生成
array_fill
: 用给定的值填充数组array_fill_keys
: 使用指定的键和值填充数组array_pad
: 以指定长度将一个值填充进数组
11. 类型转换
list
: 将数组中的值赋予一组变量(类似解构赋值)implode
: 将数组元素按指定字符拼装成字符串explode
: 将字符串分割为数组extract
: 将关联数组拆分成变量名值对compact
: 将一组变量名值对拼装成一个关联数组键值对
12. 回调处理
array_filter
: 用回调函数过滤数组中的单元array_map
: 为数组的每个元素应用回调函数array_reduce
: 使用用户自定义函数对数组中的每个元素做回调处理