17.PHP基础-数组
PHP数组
一.概念
数组:array 数组的组合,指将一组数据(多个)存储到一个指定的容器中,用变量指向该容器,然后可以通过变量一次性得到该容器中的数据
二.语法
在php中系统提供多种定义数组的方式
1.使用array关键字:最常用的
$变量名 = array(元素1,元素2,元素3)
$arr1 = array('1',2,'hello');
var_dump($arr1);
print_r($arr1);
//结果如下
/*
array(3) {[0]=>string(1) "1"[1]=>int(2)[2]=>string(5) "hello"
}
Array
([0] => 1[1] => 2[2] => hello
)
*/
2.可以使用中括号来包裹数据
$变量名 = [元素1,元素2,元素3]
$arr2 = ['1', 2, 'hello'];
var_dump($arr2);
print_r($arr2);
//结果如下
/*
array(3) {[0]=>string(1) "1"[1]=>int(2)[2]=>string(5) "hello"
}
Array
([0] => 1[1] => 2[2] => hello
)*/
3.隐形定义数组:给变量增加一个中括号,系统自动变成数组
$变量名[] = 值1 //如果不提供下标也可以,系统自动生成(数字:从0开始)
$变量名[下标] = 值 //中括号里面的内容称之为下标,key;该下标可以是字母(单词)或者数字,与变量命名规则相似
$arr3[] = 1;
$arr3[10] = 100;
$arr3[] = '1'; //默认从当前前面最大的下标开始(自动)
$arr3['key'] = 'key';var_dump($arr3);
print_r($arr3);//结果如下
/*
array(4) {[0]=>int(1)[10]=>int(100)[11]=>string(1) "1"["key"]=>string(3) "key"
}Array
([0] => 1[10] => 100[11] => 1[key] => key
)
*/
三.特点
1.可以证书下标或者字符串下标
如果数组下标都为整数:索引数组
如果数组下标都为字符串:关联数组
2.不同下标可以混合存在:混合数组
3.数组元素的顺序以放入顺序为准,跟下标无关
$arr3[] = 1;
$arr3[10] = 100;
$arr3[] = '1';
$arr3['key'] = 'key';
print_r($arr3);$arr3[1] = 'value';;
print_r($arr3);
/* Array
([0] => 1[10] => 100[11] => 1[key] => key
)
Array
([0] => 1[10] => 100[11] => 1[key] => key[1] => value //按照放入顺序为准而不是下标
)
*/
4.数字下标的自增长特性:从0开始自动。如果中间手动出现较大的,那么后面的自增长元素从最大的值+1开始
5.特殊值下标的自动转换
布尔值:true和false
空:null
$arr4[false] = false;
$arr4[true] = true;
$arr[NULL] = NULL;
print_r($arr4);
var_dump($arr4);
/*
Array ( [0] => [1] => 1 )
array(2) { [0]=> bool(false) [1]=> bool(true) }
*/
6.php中数组元素没有类型限制
7.PHP中数组元素没有长度限制
补充:php中的数组是很大的数据,所以储存位置是堆区,为当前数组分配一块连续的内存,
四.多维数值
多维数组:数组里面的元素又是数组
4.1 二维数组
数组中所有的元素都是一维数组
$info = array(array('name' => 'yy', 'age' => 18),array('name' => 'Tom', 'age' => 34),array('name' => 'Jim', 'age' => 20) //最后一个元素,后面可以跟逗号不影响(不建议)
);
print_r($info);
/*
Array
([0] => Array([name] => yy[age] => 18)[1] => Array([name] => Tom[age] => 34)[2] => Array([name] => Jim[age] => 20))
*/
4.2 多维数组
在第二维的数组元素中可以继续是数组,在php中没有维度限制(PHP本质并没有二维数组)
-
PHP 的 数组其实就是一个哈希表(键值对集合),而键对应的值可以是任何类型——包括另一个数组。
-
PHP 没有真正“连续的二维内存结构”;
-
所谓“多维数组”只是“嵌套数组”而已。
但是,不建议使用超过三维以上的数组,会增加访问的复杂度,降低访问效率
4.3 异形数组(不规则数组)
异型数组:数组中的元素不规则,有不同基本变量也有数组。
在实际开发中,并不常用,尽量让数组元素规则化(便于进行访问)
五.数组的遍历
5.1 遍历的基本含义
数组遍历:普通数组数据的访问都是通过数组元素的下标来实现访问,如果说数组中所有的数据都需要一次输出出来,就需要使用一些简化的规则来实现自动获取下标以及输出数组元素
$arr = array(0=>array('name'=>'Tom'),1=>array('name'=>"Jim"))//二维数组
//访问一维元素:$arr[一维下标]
$arr[0] //结果array('name'=>'Tom')
//访问二维元素:$arr[一维下标][二维下标]
$arr[1]['name'] //Jim
5.2 foreach 遍历
语法
foreach (iterable_expression as $value) {statement_list
}
foreach (数组变量名/变量表达式 as $元素值) {$元素值 //
}foreach (数组变量名/变量表达式 as $元素下标名=>$元素值 {$元素下标名 ,$元素值
}//这里的$元素下标名$元素值可以随意命名
原理
Foreach 遍历的原理:本质是数组的内部有一颗指针,默认是只想数组元素的第一个元素
foreahc就是利用指针去获取数据,同时移动指针
1.foreach 会重置指定:让指针指向第一个元素
2.进入foreach循环:通过指针去的当前第一个元素,然后将下标取出放到对应的下标变量中(如果存在),将值去除来放到对应的变量$v中
3.进入到循环内部(循环体),开始执行
4.重复2和3,一直到2的时候遇到指针取不到内容(指针指向数组最后)
注意:
PHP 的 foreach 的确依赖数组内部的“指针”,默认从第一个元素开始遍历;
但它为了安全与性能,会使用指针快照或引用模式来控制是否修改原数组。
按值遍历(默认)
foreach ($arr as $value) { ... }
→ 此时会复制哈希表的内部指针快照,不影响原数组的指针位置。
按引用遍历
foreach ($arr as &$value) { ... }
→ 这时它直接操作原数组的内部结构,指针确实在“动”,而且一旦出错可能留下引用“污染”。
举个例子:
$arr = [1, 2, 3];
foreach ($arr as &$v) {}//按引用遍历
foreach ($arr as $v) { echo $v; }//按值遍历 (按值遍历(默认)// 输出 1 2 2 !!!
因为上一个循环留下了引用,导致 $v 仍绑定最后一个元素。
示例
/* Example: value only */
$array = [1, 2, 3, 17];foreach ($array as $value) {echo "Current element of \$array: $value.\n";
}/* Example: key and value */
$array = ["one" => 1,"two" => 2,"three" => 3,"seventeen" => 17
];foreach ($array as $key => $value) {echo "Key: $key => Value: $value\n";
}/* Example: multi-dimensional key-value arrays */
$grid = [];
$grid[0][0] = "a";
$grid[0][1] = "b";
$grid[1][0] = "y";
$grid[1][1] = "z";foreach ($grid as $y => $row) {foreach ($row as $x => $value) {echo "Value at position x=$x and y=$y: $value\n";}
}/* Example: dynamic arrays */
foreach (range(1, 5) as $value) {echo "$value\n";
}
5.3 for 循环
for循环:基于已知边界条件(起始和结束)然后有条件的变化(规律)
因此:for循环遍历数组有对应条件
1.获取数组长度:count(数组)得到数组元素的长度
2、要求数组元素的下标是规律的数字
示例
//数组特点:索引数组,下标规律
$arr = array(1, 2, 3, 4, 5, 6, 7);
for ($i = 0,$len=count($arr) $i < $len; $i++) {echo 'key is:', $i, ' and value is: ', $arr[$i], '<br/>';
};
//结果
/*
key is:0 and value is: 1
key is:1 and value is: 2
key is:2 and value is: 3
key is:3 and value is: 4
key is:4 and value is: 5
key is:5 and value is: 6
key is:6 and value is: 7
*///第二种写法
$arr = array(1, 2, 3, 4, 5, 6, 7);
for ($i = 0, $len = count($arr); $i < $len; $i++) {echo 'key is:', $i, ' and value is: ', $arr[$i], '<br/>';
};
5.4 while配合each和list遍历数组
while是子啊外部定义边界条件,如果要实现可以和for循环
5.4.1 each函数
Php7.2 起已废弃 php8已删除
each() 被移除的原因是:
它和
foreach重复功能太多,还容易造成引用混乱和性能损耗。
each 能够从一个数组中获取当前数组指针所指向的元素的下标和值,拿到以后将数组指针下移,同时将拿到的元素下标和值以一个四个元素的数组返回
0 下标=>取的元素的下标值
1 下标=>取得元素的值
key下标=>取得元素的下标值
value下标=>取得元素的值
5.4.2 list函数
list(mixed $var, mixed ...$vars = ?): array
与array() 类似, **list()**实际上并非函数,而是一种语言结构。它用于一次性赋值多个变量。只有实现了ArrayAccess接口的数组和对象才能被 **list() 解包。list()**表达式不能为空。
没有返回值,从索引0开始
示例
$info = array('coffee', 'brown', 'caffeine');// Listing all the variables
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";
//coffee is brown and caffeine makes it special.$info = array('coffee', 2 => 1);
list($first) = $info;
//string(6) "coffee"$info = array('coffee', 2 => 1);
list($first, $second) = $info;
var_dump($first, $second); //没有下标1 的值 所以会报错Warning: Undefined array key
因php8直接删除了each所以旧写法php5.0:
while (list($key, $value) = each($arr)) {echo "$key => $value\n";
}
应改为用foreach
如果你真的需要“指针式遍历”
有时候你可能想模仿 each() 的行为(例如边遍历边修改数组、或用 next() 手动控制)。
那可以改成这样:
reset($arr); // 指针指向第一个元素
while (($key = key($arr)) !== null) {$value = current($arr);echo "$key => $value\n";next($arr); // 移动指针
}
这个版本等价于 while + each,只是用现代方式写出来。
底层逻辑完全一样:key() 和 current() 取数据,next() 推进指针。
5.5 数组相关函数
5.5.1 排序函数
sort
作用
Ascending 升序排序
按照升序(从小到大)给数组排序
语法
sort(array &$array, int $flags = SORT_REGULAR): true
注意
-
如果两个元素相等,它们将保持原有顺序。在 PHP 8.0.0 之前,它们在排序数组中的相对顺序是未定义的。
-
此函数会为元素分配新键
array。它会删除任何可能已分配的现有键,而不仅仅是重新排列键。 -
将数组的内部指针重置为第一个元素。
参数
$array 原数组
$flags 默认值 SORT_REGULAR
第二个可选参数flags 可用于修改排序行为,其值如下:
排序类型标志:
SORT_REGULAR- 按常规方式比较项目;详细信息请参见比较运算符部分。SORT_NUMERIC- 按数值比较项目SORT_STRING- 将项目作为字符串进行比较。SORT_LOCALE_STRING- 根据当前区域设置,将项目作为字符串进行比较。它使用区域设置,可以使用setlocale()函数更改区域设置。SORT_NATURAL- 使用类似natsort() 的“自然排序”方式将项目作为字符串进行比较SORT_FLAG_CASE****SORT_STRING- 可以与or 运算符结合使用(按位或), **SORT_NATURAL**实现字符串不区分大小写的排序。
返回值
总是返回true
php8.0 返回值的类型是true之前是bool
示例
$info = array('coffee', 'brown', 'caffeine');echo sort($info) . PHP_EOL; //1
var_dump(sort($info)); //bool(true)
print_r($info);
/*
Array
([0] => brown[1] => caffeine[2] => coffee
)
*/
$numList = [8, 7, 6, 5, 4, 3, 2, 1];
sort($numList);
print_r($numList);
/*
Array
([0] => 1[1] => 2[2] => 3[3] => 4[4] => 5[5] => 6[6] => 7[7] => 8
)
*/
rsort
作用
Descending sort 降序排序,r-reverse反向,从大到小
语法
rsort(array &$array, int $flags = SORT_REGULAR): true
参数
$array 原数组(&引用会改变原数组)
$flags 标志位 默认值 SORT_REGULAR常规排序
返回值
总是返回true
示例
$numList = [8, 7, 6, 5, 4, 3, 2, 1];
sort($numList);
print_r($numList);
/*
Array
([0] => 1[1] => 2[2] => 3[3] => 4[4] => 5[5] => 6[6] => 7[7] => 8
)
*/
rsort($numList);
print_r($numList);
/*
Array
([0] => 8[1] => 7[2] => 6[3] => 5[4] => 4[5] => 3[6] => 2[7] => 1
)
*/
asort
a-associative 关联的
asort() → associative sort,即“按值排序但保留键名”
作用
按升序对数组进行排序,并保留索引关联(即索引关系不变)
语法
asort(array &$array, int $flags = SORT_REGULAR): true
参数
$array 原数组 引用 会更改原数组
$flags
第二个可选参数flags 可用于修改排序行为,其值如下:
排序标志类型:
SORT_REGULAR- 按常规方式比较元素;详细信息请参见比较运算符部分。SORT_NUMERIC- 对各元素进行数值比较SORT_STRING- 将元素作为字符串进行比较SORT_LOCALE_STRING- 根据当前区域设置,将元素作为字符串进行比较。此操作使用区域设置,可以使用setlocale()函数更改区域设置。SORT_NATURAL- 使用类似natsort() 的“自然顺序”将元素作为字符串进行比较SORT_FLAG_CASE****SORT_STRING- 可以与or 运算符结合使用(按位或), **SORT_NATURAL**以不区分大小写的方式对字符串进行排序。
返回值
true
示例
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val) {echo "$key = $val\n";
}
/*
c = apple
b = banana
d = lemon
a = orange
*/
$numList = [5, 4, 3, 2, 1];
print_r($numList);
asort($numList);
print_r($numList);/*
Array
([0] => 5[1] => 4[2] => 3[3] => 2[4] => 1
)Array
([4] => 1[3] => 2[2] => 3[1] => 4[0] => 5
)
*/
arsort
作用
按降序对数组进行排序,并保留索引关联(即索引关系不变)
语法
arsort(array &$array, int $flags = SORT_REGULAR): true
参数
$array 原数组 引用会改变原数组
$flags 排序规则默认SORT_REGULAR
返回值
true
示例
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fruits);
foreach ($fruits as $key => $val) {echo "$key = $val\n";
}
/*
a = orange
d = lemon
b = banana
c = apple
*/
$numList = [1, 2, 3, 4, 5];
print_r($numList);
arsort($numList);
print_r($numList);/*
Array
([0] => 1[1] => 2[2] => 3[3] => 4[4] => 5
)
Array
([4] => 5[3] => 4[2] => 3[1] => 2[0] => 1
)
*/
ksort
作用
根据索引值来升序排序
语法
ksort(array &$array, int $flags = SORT_REGULAR): true
参数
&$array 引用原数组会改变原数组
flags 标志位 排序规则 默认SORT_REGULAR
返回值
true
示例
<?php
echo "<pre>";
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
ksort($fruits);
foreach ($fruits as $key => $val) {echo "$key = $val\n";
}
/*
a = orange
b = banana
c = apple
d = lemon
*/
$numList = [5 => 5, 4 => 4, 3 => 3, 2 => 2, 1 => 1];
print_r($numList);
ksort($numList);
print_r($numList);/*
Array
([5] => 5[4] => 4[3] => 3[2] => 2[1] => 1
)
Array
([1] => 1[2] => 2[3] => 3[4] => 4[5] => 5
)
*/
echo "</pre>";
krsort
作用
根据索引值降序排序
语法
krsort(array &$array, int $flags = SORT_REGULAR): true
参数
&$array 引用原数组 会改变原数组
$flags 标志位 排序规则默认SORT_REGULAR
返回值
true
示例
<?php
echo "<pre>";
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
krsort($fruits);
foreach ($fruits as $key => $val) {echo "$key = $val\n";
}
/*
d = lemon
c = apple
b = banana
a = orange
*/
$numList = [0 => 5, 1 => 4, 2 => 3, 3 => 2, 4 => 1];
print_r($numList);
krsort($numList);
print_r($numList);/*
Array
([0] => 5[1] => 4[2] => 3[3] => 2[4] => 1
)
Array
([4] => 1[3] => 2[2] => 3[1] => 4[0] => 5
)
*/
echo "</pre>";
shuffle
作用
打乱数组,底层实现本质上是按值重排索引数组,所以索引会变成连续数字索引
语法
shuffle(array &$array): true
参数
&$array 引用数组 会改变原数组
返回值
true
示例
<?php
echo "<pre>";
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
shuffle($fruits);
foreach ($fruits as $key => $val) {echo "$key = $val\n";
}
/*
0 = apple //索引被修改为数字连续索引
1 = orange
2 = lemon
3 = banana
*/
$numList = [0 => 5, 1 => 4, 2 => 3, 3 => 2, 4 => 1];
print_r($numList);
shuffle($numList);
print_r($numList);/*
Array
([0] => 5[1] => 4[2] => 3[3] => 2[4] => 1
)
Array
([0] => 3[1] => 5[2] => 2[3] => 4[4] => 1
)
*/
echo "</pre>";
5.5.2 指针函数
reset
作用
将数组内部指针重置为第一个元素
语法
reset(array|object &$array): mixed
参数
&$array 引用原数组会改变原数组
返回值
返回数组第一个元素的值,如果数组为空则返回false。
示例
<?php
echo "<pre>";
$array = array('step one', 'step two', 'step three', 'step four');//默认取第一个元素
echo current($array) . "<br />\n"; // "step one"// 跳过两个元素
next($array);
next($array);
echo current($array) . "<br />\n"; // "step three"//重置指针,则指向第一个元素
echo reset($array) . PHP_EOL; // "step one"
echo current($array) . "<br />\n"; // "step one"
echo "</pre>";
end
作用
设置数组指针指向最后一个元素
语法
end(array|object &$array): mixed
参数
&$array 引用原数组 会改变原数组
返回值
返回最后一个元素的值 如果值为空则返回false
示例
<?php
echo "<pre>";
$array = array('step one', 'step two', 'step three', 'step four');//默认取第一个元素
echo current($array) . "<br />\n"; // "step one"// 跳过两个元素
next($array);
next($array);
echo current($array) . "<br />\n"; // "step three"//重置指针指向末尾
echo end($array) . PHP_EOL; // "step four"
echo current($array) . "<br />\n"; // "step four"
echo "</pre>";
next
作用
设置数组指针指向下一个元素
语法
next(array|object &$array): mixed
参数
&$array 引用原数组 会改变原数组
返回值
返回下一个元素的值 如果值为空则返回false
示例
$transport = array('foot', 'bike', 'car', 'plane');
echo $mode = current($transport), PHP_EOL; // $mode = 'foot';
echo $mode = next($transport), PHP_EOL; // $mode = 'bike';
echo $mode = next($transport), PHP_EOL; // $mode = 'car';
echo $mode = prev($transport), PHP_EOL; // $mode = 'bike';
echo $mode = end($transport), PHP_EOL; // $mode = 'plane';
prev
作用
设置数组指针指向上一个元素
语法
prev(array|object &$array): mixed
参数
&$array 引用原数组 会改变原数组
返回值
返回上一个元素的值 如果值为空则返回false
示例
$transport = array('foot', 'bike', 'car', 'plane');
echo $mode = current($transport), PHP_EOL; // $mode = 'foot';
echo $mode = next($transport), PHP_EOL; // $mode = 'bike';
echo $mode = next($transport), PHP_EOL; // $mode = 'car';
echo $mode = prev($transport), PHP_EOL; // $mode = 'bike';
echo $mode = end($transport), PHP_EOL; // $mode = 'plane';
current
作用
获取当前指针指向的元素
语法
current(array|object $array): mixed
参数
$array原数组
返回值
current() 函数仅返回内部指针当前指向的数组元素的值。它不会以任何方式移动指针。如果内部指针指向元素列表的末尾之外或数组为空,则current()返回false。
示例
$transport = array('foot', 'bike', 'car', 'plane');
echo $mode = current($transport), PHP_EOL; // $mode = 'foot';
echo $mode = next($transport), PHP_EOL; // $mode = 'bike';
echo $mode = next($transport), PHP_EOL; // $mode = 'car';
echo $mode = prev($transport), PHP_EOL; // $mode = 'bike';
echo $mode = end($transport), PHP_EOL; // $mode = 'plane';
key
作用
从数组中获取键
语法
key(array|object $array): int|string|null
参数
$array 原数组
返回值
key ()函数仅返回内部指针当前指向的数组元素的键。它不会以任何方式移动指针。如果内部指针指向元素列表的末尾之外或数组为空,则key()返回null。
示例
<?php
echo "<pre>";
$array = array('fruit1' => 'apple','fruit2' => 'orange','fruit3' => 'grape','fruit4' => 'apple','fruit5' => 'apple'
);// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array)) {if ($fruit_name == 'apple') {echo key($array), "\n";}next($array);
}
/*
fruit1
fruit4
fruit5
*/
echo "</pre>";
5.5.3 其他函数
count
作用
统计数组中所有元素的数量
语法
count(Countable|array $value, int $mode = COUNT_NORMAL): int
参数
$value 数组或者 Countable 对象。
$mode 如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。
警告
count() 能检测递归来避免无限循环,但每次出现时会产生 E_WARNING 错误 (如果 array 不止一次包含了自身)并返回大于预期的统计数字。
例如:如果你不小心搞了一个“自己包含自己的数组”,就可能触发这个警告。
返回值
返回 value 中的元素的数量。
在 PHP 8.0.0 之前,如果参数既不是数组也不是实现了 Countable 接口的对象,将返回 1。
当 value 为 null 时返回 0。
示例
<?php
echo "<pre>";
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
var_dump(count($a)); //int(3)$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
var_dump(count($b)); //int(3)
echo "</pre>";
countable
Countable 是 PHP 的一个接口(interface)。
接口就像一个“约定”——如果一个类实现了它,就必须提供某个方法。
在这个例子里:
interface Countable {public function count(): int;
}
也就是说:
- 任何实现了
Countable接口的对象,都必须有一个count()方法; - 然后
count($obj)调用时,PHP 会自动调用$obj->count()。
举个例子:
class Box implements Countable {private array $items = ['apple', 'banana', 'pear'];public function count(): int {return count($this->items);}
}$box = new Box();
echo count($box); // 输出 3
所以,count() 不仅能统计数组,也能统计“可数的对象”,前提是对象实现了 Countable 接口。
array_push
作用
将一个或多个单元压入数组的末尾(入栈)
语法
array_push(array &$array, mixed $value1, mixed $... = ?): int
参数
&$array 改变原数组
$value 可以穿多个需要数组末尾压入的元素
返回值
返回处理之后数组的元素个数。
示例
<?php
echo "<pre>";$arr = [1, 2, 3, 4, 5];
echo array_push($arr, 6, 7, 8) . PHP_EOL; //8
print_r($arr);
/* Array
([0] => 1[1] => 2[2] => 3[3] => 4[4] => 5[5] => 6[6] => 7[7] => 8
)
*/
echo "</pre>";
array_pop
pop:抛出
作用
从数组末尾弹出元素(出栈)
语法
array_pop(array &$array): mixed
参数
&$array) 引用原数组 会改变原数组
返回值
返回被踢出的元素。如果array数组为空, 则返回 null。
示例
$arr = [1, 2, 3, 4, 5];
print_r(array_pop($arr)); //5
print_r($arr);
/*
Array
([0] => 1[1] => 2[2] => 3[3] => 4
)
*/
array_reverse
作用
返回一个元素顺序颠倒的数组
语法
array_reverse(array $array, bool $preserve_keys = false): array
参数
$array 不改变原数组
$preserve_keys
-
false(默认) → 不保留原键名(数字键会被重置,字符串键也会被重置成 0,1…?实际上 PHP 会重置数字键,字符串键会保留) -
true→ 保留原来的 数字键和字符串键
返回值
返回颠倒后的新数组
示例
<?php
echo "<pre>";$input = [0 => 0,'name' => "yy",'age' => 2,7 => 3
];
$reversed = array_reverse($input);
$preserved = array_reverse($input, true);print_r($input);
print_r($reversed);
print_r($preserved);
/*
Array
([0] => 0[name] => yy[age] => 2[7] => 3
)
Array
([0] => 3[age] => 2[name] => yy[1] => 0
)
Array
([7] => 3[age] => 2[name] => yy[0] => 0
)
*/
echo "</pre>";
in_array
作用
检查数组中是否存在某个值
语法
in_array ( mixed $needle , array $haystack , bool $strict =false ): bool
参数
-
$needle 搜索值(如果是字符串,区分大小写)
-
$haystack 原函数
-
$strict
strict如果设置了 第三个参数**true** ,则**in_array()**函数还会检查 数组中元素的 类型
返回值
-
如果
needle数组中找到该元素, 则 返回true; -
否则返false
示例
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {//trueecho "Got Irix";
}
if (in_array("mac", $os)) {//falseecho "Got mac";
}
array_keys
作用
返回数组中的所有索引值或子集作为一个新数组的元素集合
语法
array_keys(array $array): arrayarray_keys(array $array, mixed $filter_value, bool $strict = false): array
参数
$array 原数组 不改变原数组
$filter_value 如果指定了该值,则仅返回包含该值的键。
$strict 确定搜索过程中是否应使用严格比较(===)。
返回值
默认返回一个包含所有键的数组array
**array_keys()**返回数组中的键,包括数字键和字符串键array。
如果filter_value指定了参数 a,则仅返回该参数对应的键。否则,array返回参数 a 中的所有键。
示例
<?php
echo "<pre>";
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
/*
Array
([0] => 0[1] => color
)
*/$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));/* Array
([0] => 0[1] => 3[2] => 4
)
*/
$array = array("color" => array("blue", "red", "green"),"size" => array("small", "medium", "large")
);
print_r(array_keys($array));/* Array
([0] => color[1] => size
)
*/
echo "</pre>";
array_values
作用
返回数组中的所有值 array,并按数值索引数组
语法
array_values(array $array): array
参数
$array 原函数
返回值
返回一个带索引的值数组(从0规律开始)
示例
echo "<pre>";
$a = array(3 => 11,1 => 22,2 => 33,
);
$a[0] = 44;print_r(array_values($a));
/* Array
([0] => 11[1] => 22[2] => 33[3] => 44
)
*/
