Correcting teacher:Guanhui
Correction status:qualified
Teacher's comments:还有其它的数组操作函数,一定要多看多练。
用户提交的url:
http://127.0.0.1/20200713/1.php?username=%E5%B0%8F%E5%88%9A&email=admin@php.cn
代码示例:
array_key_exist()
判断用户提交数据是否存在必要字段
echo array_key_exists('username', $_GET) ? '提交成功' : '用户名未提交';
array_key_first()
获取用户提交的数据中第一个元素的键
echo array_key_first($_GET);
array_key_last()
获取用户提交的数据中最后一个元素的键
echo array_key_last($_GET);
array_keys()
获取用户提交数据数组所有键
print_r(array_keys($_GET));
array_values()
将用户提交的数据的值组成索引数组
print_r(array_values($_GET));
in_array()
检查用户提交数据中是否存在值’小刚’
echo in_array('小刚', $_GET) ? '用户名存在' : '用户名未提交';
array_search()
查找用户提交数据的值中是否有admin@php.cn
echo array_search('admin@php.cn', $_GET) ? '邮箱正确' : '邮箱未提交';
array_unique()
移除数组中重复的值,只保留第一个
$array = ['name' => '小刚', 'name' => '小明', 'email' => 'admin@php.cn'];
print_r(array_unique($array));
array_sum()
计算数组中数字之和,元素的值数字开头的数字也会计算,不能被计算的字符串记为0
$arr = [5, 10, 20, '200', 'h5'];
echo array_sum($arr);
array_product()
计算数组中所有值的乘积,不能被计算的字符串记为0
echo array_product($arr);
array_intersect()
计算数组的交集
print_r(array_intersect($array, $_GET));
用户提交的url:
http://127.0.0.1/20200713/2.php?username=%E5%B0%8F%E5%88%9A&email=admin@php.cn
$token = sha1(md5('小刚'));
array_push($_GET, $token);
print_r($_GET);
echo array_pop($_GET);
$key = sha1(md5('小刚'));
array_unshift($_GET, $key);
print_r($_GET);
echo array_shift($_GET);
print_r($_GET);
$array = [5, 10, 15, 20, 11, 2, '66l', 'Po'];
sort()
对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。
var_dump(sort($array));
print_r($array);
asort()
对数组进行排序并保持索引关系
var_dump(asort($array));
print_r($array);
arsort()
对数组进行逆向排序并保持索引关系
var_dump(arsort($array));
print_r($array);
ksort()
对数组按照键名排序
var_dump(ksort($array));
print_r($array);
krsort()
对数组按照键名逆向排序
var_dump(krsort($array));
print_r($array);
usort()
使用用户自定义的比较函数对数组中的值进行排序
function arr()
{
$arr = [5, 10, 15, 20, 11, 2, '66l', 'Po'];
$arr1 = [5, 10, 15, 20, 11, 2, '66l', 'Po'];
return $arr == $arr1 ? 0 : -1;
}
var_dump(usort($array, 'arr'));
print_r($array);
echo 'usort';
uasort()
使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
var_dump(uasort($array, 'arr'));
print_r($array);
echo 'uasort';
uksort()
使用用户自定义的比较函数对数组中的键名进行排序
var_dump(uksort($array, 'arr'));
print_r($array);
echo 'uksort';
natsort()
用“自然排序”算法对数组排序
var_dump(natsort($array));
print_r($array);
natcasesort()
用“自然排序”算法对数组进行不区分大小写字母的排序
var_dump(natcasesort($array));
print_r($array);
http://127.0.0.1/20200713/4.php?name=%E5%B0%8F%E5%88%9A&age=18&sex=%E7%94%B7&email=admin@php.cn
array_slice()
返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
print_r(array_slice($_GET, 2, 6));
print_r(array_slice($_GET, -1, 3));
array_splice()
操作数组案例:
$array = ['小刚', 18, '男', '180cm'];
// 增:利用删除长度为0的方法新增元素
// 由于被删除的元素长度为0,所以返回空数组
print_r(array_splice($array, 1, 0, ['name' => '小明', '年龄' => 28]));
print_r($array);
// 删除数组中的一部分元素:删除索引1开始的2个元素
// 返回被删除的元素
// print_r(array_splice($array, 1, 2));
// 原数组已改变
// print_r($array);
// 改:去掉数组中的某一部分并用其它值取代
// 返回被提取出的元素,这里['小刚', 18]被替换
// print_r(array_splice($array, 1, 2, ['小明', 20]));
// echo '<br>';
// 原数组已被改变
// print_r($array);
array_combine()
数组合并,将第一个数组的值作为键与第二个数组的值合并成一个数组。
$array1 = ['name', '班级', '容貌'];
$array2 = ['小明', '13期', '神仙颜值'];
$array3 = array_combine($array1, $array2);
print_r($array3);
array_merge()
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
$array4 = array_merge($array1, $array2);
print_r($array4);
array_filter()
,将元素转换后为false的值全部过滤掉回调函数结果为数组
$array = [150, 'php', true, [4, 5, 6], (new class
{
}), [], null, false, '', 0, '0'];
$get = array_filter($array);
$get = array_filter($array, function ($item) {
// 返回传入的元素
// return $item;
// is_scalar()检测数组中的元素是否是标量
// 标量变量是指那些包含了 integer、float、string 或 boolean的变量,而 array、object 和 resource 则不是标量。
return is_scalar($item);
// 检测数组中的元素是否是数组
// return is_array($item);
});
print_r($get);
array_map()
为数组的每个元素应用回调函数返回新数组
$get = array_map(function ($item) {
// 判断数组的每个元素类型是否数组
return gettype($item) == 'array' ? '是数组' : '不是数组';
}, $array);
print_r($get);
url:http://127.0.0.1/20200713/7.php?name=%E5%B0%8F%E5%88%9A&age=18&sex=%E7%94%B7&email=admin@php.cn
implode()
将一个一维数组的值转化为字符串
echo implode($_GET);
extract()
从数组中将变量导入到当前的符号表对每个键/值对都会在当前的符号表中建立变量
echo extract($_GET);
echo $name, $age, $sex, $email;
compact()
建立一个数组,包括变量名和它们的值
$host = '127.0.0.1';
$user = 'admin';
$dbname = 'parse';
print_r(compact('host', 'user', 'dbname'));
数组操作函数的返回值一定要记住;
数组元素操作可以组合数据库连接字符串及查询语句;
用户提交的数据过滤;
掌握数组与字符串的转换技巧;
掌握栈与队列的含义及工作流程。