5-2数组键值与指针操作(巡航)函数-PHP实战开发教程

5-2数组键值与指针操作(巡航)函数-PHP实战开发教程

乾矫许懈抒肆砷叮青深摄挠驮



函数主要要搞清楚以下几点?
1. 功能:能做什么?
2. 场景: 用在哪里?
3. 参数: 必选与可选的
4. 返回值: 类型与数量

一、键与值的操作(6个)
1. in_array(value, array): val是否在array中,返回布尔值
2. array_key_exists(key,array):key是否在array中,返回布尔值
3. array_values(array): 以索引方式返回array值部分
4. array_keys(array[,value]): 以索引方式返回array键部分,还可返回指定值的键
5. array_search(value, array): 以字符串方式返回指定值的键
6. array_filp(array):键值对调
新建demo2.php

代码:

<?php
echo "<h3>数组键值与指针巡航函数</h3><hr color='red'>";
echo "<pre/>";
$user=['id'=>5,'name'=>'mengmianren','gender'=>'male','age'=>88];
print_r($user);
echo "<hr color='red'>";
//一.数组中的键与值的常用操作函数
//1. in_array(value, array): val是否在array中,返回布尔值
echo in_array('mengmianren',$user) ? 'mengmianren在数组中<hr color=red>' : 'mengmianren不在数组中<hr color=red>';

//2. array_key_exists(key,array):key是否在array中,返回布尔值
echo array_key_exists('gender',$user) ? '键gender在数组中<hr color=red>' : '键gender不在数组中<hr color=red>';

//3.array_values(array): 以索引方式返回array值部分
echo "返回值组成的索引数组数:<br>";
print_r(array_values($user));

//4.array_keys(array[,value]): 以索引方式返回array键部分
echo "返回的键组成的索引数组数:<br>";
print_r(array_keys($user));

//4-1.array_keys(array[,value]): 以索引方式返回array键部分,还可返回指定值的键
echo "mengmianren对应的键是:<br>";
print_r(array_keys($user,'mengmianren'));
echo "<hr color='red'>";

//5. array_search(value, array): 以字符串方式返回指定值的键
echo "mengmianren对应的键是:".array_search('mengmianren', $user);
echo "<hr color='red'>";

//6. array_filp(array):键值对调
echo "键值对调后的结果是:<br>";
print_r(array_flip($user));
echo "<hr color='red'>";

执行:

5-2数组键值与指针操作(巡航)函数-PHP实战开发教程第1张

5-2数组键值与指针操作(巡航)函数-PHP实战开发教程第2张


二、数组内部指针(巡航)操作(8个)
1. key(array):返回当前元素的键 
2. current(array):当前元素的值,pos()为同名函数
3. next(array):指针下移,指向下一个元素,返回当前值
4. reset(array):指针复位,指向第一个元素,并返回它的值
5. end(array):指针移动最后一个元素上
6. prev(array):指针向前移动一位,并返回当前元素的值
7. each(array):返回当前元素的键值的索引与关联描述的数组,并自动下移指针
8. list($a,$b,…):将索引数组中的值,赋值给一组变量

代码:

<?php
echo "<h3>数组键值与指针巡航函数</h3><hr color='red'>";
echo "<pre/>";
$user=['id'=>5,'name'=>'mengmianren','gender'=>'male','age'=>88];
print_r($user);
echo "<hr color='red'>";
// 二、数组内部指针(巡航)操作
//count(array)当前数组的元素数量
echo "当前数组中有".count($user)."个元素"."<hr color='red'>";
//当前指针位指向第一个元素

//1.key(array):返回当前元素的键
echo "数组中第一个元素的键是".key($user)."<hr color='red'>";

//2.current(array):当前元素的值,pos()为同名函数
echo "数组中第一个元素的值是".current($user)."<hr color='red'>";

//3.next(array):指针下移,指向下一个元素
next($user);
echo "指针下移一位后的键是".key($user)."<br>";
echo "指针下移一位后的值是".current($user)."<br>";
//3-1.next(array):返回值是指针指向元素的值
echo "指针下移两位后next()函数的返回值是".next($user)."<br>";
//3-2.next(array):指针下移到数组边界后面返回值为false
next($user);
echo "指针下移四位后next()函数的返回值是:<br>";
var_dump(next($user));
echo "<hr color='red'>";
//4.reset(array):指针复位,指向第一个元素,并返回它的值
reset($user);
echo "reset()复位以后数组的结构为:<br>";
print_r($user);
//除复位外,还可返回第一个元素的值
// var_dump(reset($user));
echo "<br>复位函数reset()的返回值是:".reset($user);
echo "<hr color='red'>";

//5. end(array):指针移动最后一个元素上
end($user);
echo "指针移动最后一个元素上后的键值对应关系: ".'['.key($user).']=>'.current($user);
echo "<br>";
echo "end()函数返回值为: ".end($user);
echo "<hr color='red'>";

//6. prev(array):指针向前移动一位,并返回当前元素的值
prev($user);
echo "指针前移一位后的键值对应关系: ".'['.key($user).']=>'.current($user);
echo "<br>";
echo "指针前移两位后的返回值是: ".prev($user);
echo "<hr color='red'>";


执行:

5-2数组键值与指针操作(巡航)函数-PHP实战开发教程第3张

7. each(array):返回当前元素的键值的索引与关联描述的数组,并自动下移指针
注意:因为执行效率的问题,each在php7中已经被废弃
返回四个元素的数组:
2个索引元素, [0]是键,[1]是值
2个关联元素, [key]是键, [value]是值
代码:

<?php
echo "<h3>数组键值与指针巡航函数</h3><hr color='red'>";
echo "<pre/>";
$user=['id'=>5,'name'=>'mengmianren','gender'=>'male','age'=>88];
print_r($user);

echo "<hr color='red'>";
//7. each(array):返回当前元素的键值的索引与关联描述的数组,并自动下移指针
/**
 * 返回四个元素的数组:
 * 2个索引元素, [0]是键,[1]是值
 * 2个关联元素, [key]是键, [value]是值
 */
echo "each函数操作数组的结构:<br>";
print_r(each($user));
echo "<hr color='red'>";

执行:

5-2数组键值与指针操作(巡航)函数-PHP实战开发教程第4张

8. list($a,$b,…):将索引数组中的值,赋值给一组变量
执行的操作:
 1.each($user): 获取当前元素的索引部分
 2.list($key, $value): [0]的值赋给变量$key, [1]的值赋给变量$value
 3.数组$user指针自动下移

代码:

<?php
echo "<h3>数组键值与指针巡航函数</h3><hr color='red'>";
echo "<pre/>";
$user=['id'=>5,'name'=>'mengmianren','gender'=>'male','age'=>88];
print_r($user);

echo "<hr color='red'>";
//8. list($a,$b,...):将索引数组中的值,赋值给一组变量
/**
 * 执行的操作:
 * 1.each($user): 获取当前元素的索引部分
 * 2.list($key, $value): [0]的值赋给变量$key, [1]的值赋给变量$value
 * 3.数组$user指针自动下移
 */
list($key, $value) = each($user);
echo $key,'=>'.$value,'<br>';
//重复调用
list($key, $value) = each($user);
echo $key,'=>'.$value,'<br>';
//重复调用
list($key, $value) = each($user);
echo $key,'=>'.$value,'<br>';
//重复调用
list($key, $value) = each($user);
echo $key,'=>'.$value,'<br>';
//重复调用
list($key, $value) = each($user);
echo $key,'=>'.$value,'<br>';

//非常适合用循环来实现数组遍历
echo "<hr color='red'>";
reset($user);//指针复位
echo "使用指针复位后使用list和each实现数组遍历:<br>";
while(list($key, $value) = each($user))
{
    echo $key,'=>'.$value,'<br>';
}

执行:

5-2数组键值与指针操作(巡航)函数-PHP实战开发教程第5张


炼呕踩竿恢陪嗜蛙隙尘枚仁鼎