PHP 数组

本文深入解析PHP数组的类型,包括关联数组和索引数组,以及二维数组的定义与使用。同时,详细介绍了数组的基本操作,如大小计算、字符串转换、元素移除、进栈与出栈、合并、排序与打乱等。此外,还涵盖了数组指针、遍历方法及其它常用函数,如in_array()、array_keys()等。

目录

1 数组类型

1.1 关联数组

1.2 索引数组

2 二维数组

3 数组的基本操作

3.1 数组大小

3.2 数组转字符串

3.3 移除数组元素

3.4 数组元素的进栈与出栈

3.5 合并数组

3.6 数组排序与打乱

3.7 数组指针

3.8 数组遍历

4 其它常用数组函数


1 数组类型

1.1 关联数组

关联数组的键值由字符串或字符串和数字组合。

<?php
$students=['student1'=>'brell','student2'=>'lwqbrell'];
var_dump($students);
?>

1.2 索引数组

索引数组的键值由数字组成,在没有指定键值得情况下,默认为索引数组。

<?php
$students=['brell','lwqbrell'];
var_dump($students);
?>

2 二维数组

将两个一维数组组合起来便可形成二维数组(在一维数组里嵌套一维数组),二维数组很重要,在日常的开发过程中我们会经常使用到二维数组。可以使用array()来定义,也可以使用方括号[ ]来定义。

<?php
$score=array(
  'math'=>array(88,86,97),
  'chinese'=>array(88,93,97),
  'english'=>array(88,86,97)
);
var_dump($score);
?>
<?php
$score=[
  'math'=>[88,86,97],
  'chinese'=>[88,93,97],
  'english'=>[88,86,97]
];
var_dump($score);
?>

3 数组的基本操作

3.1 数组大小

int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] )

count — 计算数组中的单元数目,或对象中的属性个数

array_or_countable
数组或者 Countable 对象。

mode
如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。

<?php
$score=[
  'math'=>[88,86,97],
  'chinese'=>[88,93,97],
  'english'=>[88,86,97]
];
$len=count($score);
echo $len;
?>

3.2 数组转字符串

string implode ( string $glue , array $pieces )

glue
默认为空的字符串。

pieces
你想要转换的数组

<?php
$programming=['C language','Java','PHP','C#'];
echo implode(',', $programming);
?>

3.3 移除数组元素

array_splice

array_splice — 去掉数组中的某一部分并用其它值取代

array array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement= array() ]] )

把 input 数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用其中的单元取代。

$arr=[3,4,8,1,6];
array_splice($arr,2);
var_dump($arr); // 返回[3,4]
$arr=[3,4,8,1,6];
array_splice($arr,0,2);
var_dump($arr); // 返回[8,1,6]

3.4 数组元素的进栈与出栈

array_push

array_push — 将一个或多个单元压入数组的末尾(入栈)

int array_push ( array &$array , mixed $value1 [, mixed $... ] )

array_push() 将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。

array_pop

 弹出数组最后一个单元(出栈)

array_pop ( array &$array ) : mixed

3.5 合并数组

array_merge

array_merge — 合并一个或多个数组

array array_merge ( array $array1 [, array $... ] )

array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值

如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

3.6 数组排序与打乱

bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

array
要排序的数组。

sort_flags
可选的第二个参数 sort_flags 可以用以下值改变排序的行为:

排序类型标记:

SORT_REGULAR - 正常比较单元(不改变类型)
SORT_NUMERIC - 单元被作为数字来比较
SORT_STRING - 单元被作为字符串来比较
SORT_LOCALE_STRING - 根据当前的区域(locale)设置来把单元当作字符串比较,可以用 setlocale() 来改变。
SORT_NATURAL - 和 natsort() 类似对每个单元以“自然的顺序”对字符串进行排序。 PHP 5.4.0 中新增的。
SORT_FLAG_CASE - 能够与 SORT_STRING 或 SORT_NATURAL 合并(OR 位运算),不区分大小写排序字符串。

bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

rsort — 对数组逆向排序

bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

asort — 对数组进行排序并保持索引关系
array
输入的数组。

sort_flags
可以用可选的参数 sort_flags 改变排序的行为

bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

arsort — 对数组进行逆向排序并保持索引关系

bool shuffle ( array &$array )

随机排列单元的顺序一个数组

3.7 数组指针

mixed current ( array &$array )

current — 返回数组中的当前单元

mixed end ( array &$array )

end — 将数组的内部指针指向最后一个单元

mixed prev ( array &$array )

prev — 将数组的内部指针倒回一位

mixed reset ( array &$array )

reset — 将数组的内部指针指向第一个单元

mixed next ( array &$array )

next — 将数组中的内部指针向前移动一位

3.8 数组遍历

for遍历数组

<?php
$fruit=['apple','banana','orange'];
for ($i=0; $i <count($fruit) ; $i++) { 
	echo $fruit[$i];
};
?>

foreach遍历数组

<?php
$score=[
  'math'=>86,
  'chinese'=>93,
  'english'=>97
];
foreach ($score as $key => $value) {
	echo $key.':'.$value;
}
?>

4 其它常用数组函数

  1. in_array()  判断元素是否在数组中
  2. array_keys()  获取数组的key列表
  3. array_values()  获取数组的值列表
  4. array_intersect() 获取两个或两个数组以上的交集
  5. array_diff() 比较两个或两个以上数组的差集
  6. array_unique()  删除数组中的重复值
  7. array_walk()  使用用户自定义函数对数组中的每个元素做回调处理
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值