当前位置: 首页 > news >正文

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

valuenull 时返回 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

CountablePHP 的一个接口(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
)
*/
http://www.dtcms.com/a/602475.html

相关文章:

  • 【MyBatis笔记】 - 4 - 缓存 + 逆向工程 + 分页插件
  • jsp和.net做网站的区别好大夫在线医生免费咨询
  • 目标客户精准营销品牌seo推广咨询
  • 企业网站asp一篇网站设计小结
  • 数据库概论实验(黑龙江大学)
  • HCI 数据格式
  • 用wordpress仿站企业宣传方案模板
  • 使用Netlify部署前端项目
  • 网站设计结构图用什么做丝芭传媒有限公司
  • pagehide/beforeunload / unload / onUnmounted 执行顺序与navigator.sendBeacon使用陷阱详解
  • 解决若依框架点击菜单无效的问题(或者main主体白板)vue3版本
  • 回溯-22括号生成
  • 如何做网站卖衣服第一营销网
  • 怎么写网站建设的说明线上设计师是什么意思
  • 力扣(LeetCode) ——43.字符串相乘(C++)
  • 哪里有做网站服务世安建设有限网站
  • 目前哪些企业需要做网站建设的呢企业网站优化兴田德润优惠
  • strchr函数
  • 做图书网站赚钱么关于网站建设的名言
  • Xen PVH 模式启动 Dom0 配置文档
  • 26_FastMCP 2.x 中文文档之FastMCP服务端部署:HTTP 部署指南
  • cisp-pte之SQL注入题之vulnerabilities/fu1.php?id=1
  • 发布三小时,GitHub标星11K,华为内部的图解网络笔记限时开源
  • 【electron】解决CS里的全屏问题
  • 手机网站建站软件毕设做桌面软件 网站
  • 【1.8】基于FPGA的costas环开发2——解调端下变频模块
  • 电商培训机构哪家好网站优化一年多少钱
  • 专业手机网站建设设计软文案例400字
  • pyautocad 获取obb最小包围矩形后旋转平行后标注长宽
  • Google ADK、OpenAI Agents SDK 和 AgentScope的详细对比