笔记目录
使用数组
PHP 中数组分为 2 2 2 种
- 数字索引数组
- 非数字索引数组
数 字 索 引 数字索引 数字索引数组
<?php
function myForEcho($myArr) {
foreach($myArr as $value) {
echo $value." ";
}
echo "<br/>";
}
$products = array( 'Tires', 'Oil', 'Spark Plugs' );
$numbers = [1, 2, 3];
// foreach (arr as value) { working }
// foreach ($products as $current) {
// echo $current." ";
// }
// echo all products array
myForEcho($products);
// for (index = value; index < arr-length; index++)
// { working }
// for ($i = 0; $i < count($products); $i++) {
// echo $products[$i]." ";
// }
// echo all numbers array
myForEcho($numbers);
// use range
$code_1 = range(1, 10);
$code_2 = range(1, 5, 2);
myForEcho($code_1);
myForEcho($code_2);
?>
非 数 字 索 引 非数字索引 非数字索引数组
<?php
$products = [
'Tires' => 100,
'Oil' => 50,
'Spark' => 10
];
$numbers = [1, 2, 3];
function myForEcho($myArr) {
// 非数字索引数组
// 但也兼容数字索引数组
foreach ($myArr as $key => $value) {
echo $key.' - '.$value."<br/>";
}
echo "<br/>";
}
myForEcho($products);
myForEcho($numbers);
?>
k e y key key 为键名, v a l u e value value 为键值
E a c h Each Each 与 L i s t List List 方法遍历数组
e a c h each each 方法使用
<?php
$products = [
"Code" => 1,
"Name" => "鼠标"
];
while ($element = each($products)) {
echo $element['key'].' - '.$element['value'];
}
?>
each 方法返回当前元素的属性数组,这包括键名与键值。
l i s t list list 方法使用
<?php
$produces = [
'id' => 1,
'name' => 'kQ',
'age' => 19
];
while (list($k, $v) = each($produces)) {
echo $k.' - '.$v;
echo '<br/>';
}
?>
多维数组
到目前为止,只是在使用 单 维 单维 单维数组,但在实际开发中, 多 维 多维 多维数组用的比较广泛,特别是 二 维 二维 二维数组或 三 维 三维 三维数组。
数 字 索 引 数字索引 数字索引二维数组
<?php
// or array to create
$products = [
['Thing', 'Price'],
['Oil', 'Tire', 'Spark']
];
// use for
for ($i = 0; $i < count($products); $i++) {
for ($j = 0; $j < count($products[$i]); $j++) {
echo $products[$i][$j]." ";
}
echo "<br/>";
}
?>
非 数 字 索 引 非数字索引 非数字索引二维数组
<?php
// or array to create
$products = [
[
'Code' => 'TIR',
'Description' => 'Tires',
'Price' => 10
],
[
'Code' => 'OIL',
'Description' => 'Oil',
'Price' => 4
],
[
'Code' => 'SPARK',
'Description' => 'Sparks',
'Price' => 6
],
];
// use for
for ($i = 0; $i < count($products); $i++) {
echo $products[$i]['Code'].' | '
.$products[$i]['Description'].' | '
.$products[$i]['Price'].'<br/>';
}
?>
常用排序函数
- s o r t sort sort 一维数组升序排序
- a s o r t asort asort 一维数组键值升序排序
- k s o r t ksort ksort 一维数组键名升序排序
S o r t Sort Sort 函数排序数组
<?php
$products = array('Code', 'Name', 'Key');
// Code Key Name
// sort 默认为升序
sort($products);
foreach($products as $current) {
echo $current." ";
}
?>
A s o r t Asort Asort 函数排序数组
<?php
$prices = array("Oil"=>4,"Tire"=>100,"Spark"=>6);
asort($prices);
foreach ($prices as $current => $b) {
echo $current.'-'.$b."<br/>";
}
?>
a s o r t asort asort 方法能使键名和键值在排序时保持一致, a s o r t asort asort 是对键值排序
K s o r t Ksort Ksort 函数排序数组
<?php
$prices = array("Oil"=>4,"Tire"=>100,"Spark"=>6);
ksort($prices);
foreach ($prices as $current => $b) {
echo $current.'-'.$b."<br/>";
}
?>
k s o r t ksort ksort 方法能使键名和键值在排序时保持一致, k s o r t ksort ksort 是对键名排序
反序排序函数
- s o r t sort sort 一维数组降序排序
- a s o r t asort asort 一维数组键值降序排序
- k s o r t ksort ksort 一维数组键名降序排序
多维数组排序
- array_multisort
<?php
$products = [
['TIR', 'Tires', 100],
['OIL', 'Oil', 4],
['SPK', 'Spark', 6]
];
array_multisort($products);
for ($i = 0; $i < count($products); $i++) {
for ($j = 0; $j < 3; $j++) {
echo $products[$i][$j];
}
echo '<br/>';
}
?>
排序顺序:SORT_ASC or SORT_DESC 升序或降序
s h u f f l e shuffle shuffle 函数
shuffe 函数能够打乱数组,例如打开网页时,显示不同的图片,而不是每次都是一样的结果,这时就需要使用 shuffe 函数
<?php
$arr = [1, 2, 8, 4, 2, 1];
shuffle($arr);
function setPage($myArr) {
for ($i = 0; $i < 3; $i++) {
echo $myArr[$i]." ";
}
}
setPage($arr);
?>
e x p l o d e explode explode 函数
explode 函数将数组从 t 的位置切割数组。
array explode(string separator, string string[, int limit])
比如 Name\tAge\tID\n 这串字符
$arr = explode('\t', $arr);
执行以上代码后,$arr = [‘Name’,‘Age’,‘ID\n’];
数组高级方法
- each
- current
- reset
- end
- next
- pos
- prev
e
a
c
h
each
each 方法会返回当前元素,并把指针指向下一个位置
n
e
x
t
next
next 方法把指针指向下一个位置,并返回当前元素
r
e
s
e
t
reset
reset 方法返回数组的第一个元素
e
n
d
end
end 方法返回数组的最后一个元素
逆序输出数组元素
<?php
$arr = [1, 2, 8, 4, 2, 1];
$value = end($arr);
while ($value) {
echo $value." ";
$value = prev($arr);
}
?>
对数组每一个元素应用函数
- array_walk
bool array_walk(array $arr, callable func[, userdata])
回 调 回调 回调函数必须具有 2 2 2 个参数
- 数组 键 值 键值 键值
- 数组 键 名 键名 键名
<?php
$arr = [1, 2, 8, 4, 2, 1];
function my_add(&$value, $key, $factor) {
$value *= $factor;
}
array_walk($arr, 'my_add', 2);
foreach ($arr as $c) {
echo $c." ";
}
?>
统计数组元素个数
- count
- sizeof (count 的 别 名 别名 别名)
- array_ c o u n t count count_ v a l u e s values values
<?php
$arr = [1, 2, 8, 4, 2, 1];
// sizeof is count 的别名
$ac = array_count_values($arr);
foreach ($ac as $c => $b) {
echo $c.' - '.$b."<br/>";
}
?>
E x t r a c t Extract Extract 函数
e x t r a c t extract extract 将数组转换成标量变量
<?php
$arr = ['code1'=>1, 'code2'=>2, 'code3'=>3];
// extract 必须是非数字索引的数组
extract($arr);
echo "$code1 $code2 $code3";
foreach ($arr as $c => $b) {
echo $c.' - '.$b."<br/>";
}
?>
链接: 更多关于 PHP 数组的方法
南无阿弥陀佛,善哉善哉