要点 说明
数组构成 数组是由一个或多个数组元素组成的
数组元素 每个数组元素由键(Key)和值(Value)构成
元素的识别名称,也被称为数组下标
元素的内容
映射 键 和 值 之间存在一种对应关系,称之为映射
类型划分 根据键的数据类型,可以将数组划分为索引数组和关联数组

1、索引数组

索引数组是指键名为整数的数组。默认情况下,索引数组的键名是从0开始,并依次递增。它主要适用于利用位置(0、1、2……)来标识数组元素。另外,索引数组的键名也可以自己指定。

2、关联数组

关联数组是指键名为字符串的数组。关联数组的“键”“是字符串或数值的混合,并与“值”之间具有一一对应的关系。

3、定义数组

数组定义的方式

  • array()语言结构法
  • 赋值方式
  • 短数组定义法( [ ] )

3.1、array()语言结构法

可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键(key) => 值(value)对。

array()语言结构法:

array array([ mixed $...] );

array(  key => value
, ...
);
// 键(key)可是是一个整数 integer 或字符串 string
// 值(value)可以是任意类型的值

3.2、赋值方式

使用赋值方式定义数组,实际上就是创建一个数组变量,然后使用赋值运算符直接给变量赋值。

$arr[] = 123; 			// 存储结果:$arr[0] = 123
$arr[] = 'hello'; // 存储结果:$arr[1] = 'hello'
$arr[4] = 'PHP'; // 存储结果:$arr[4] = 'PHP'
$arr['name'] = 'Tom'; // 存储结果:$arr['name'] = 'Tom'
$arr[] = 'Java'; // 存储结果:$arr[5] = 'Java'
echo '<pre>';
var_dump($arr);
// echo "<br>";
print_r($arr);
echo '</pre>';

赋值方式定义数组就是单独为数组元素赋值。

需要注意的是,赋值方式不能定义一个空数组。

3.3、短数组定义法( [ ] )

短数组定义法([ ])与array()语法结构相同,只需将array()替换为 [ ] 即可。

// 相当于:array('wind', 'fine')
$weather = ['wind', 'fine']; // 相当于:array('id' => 12, 'name' => 'PHP')
$object = ['id' => 12, 'name' => 'PHP']; // 相当于:array(array(1, 3), array(2, 4))
$num = [[1, 3], [2, 4]];

4、二维数组

$arr = array (
"PHP类图书" => array ("PHP从入门到精通","PHP典型模块","PHP标准教程"),
"JAVA类图书"=> array ("a"=>"JAVA范例手册","b"=>"JAVA WEB范例宝典"),
"ASP类图书" => array ("ASP从入门到精通",2=>"ASP范例宝典","ASP典型模块")
);
echo '<pre>';
var_dump($arr);
// echo "<br>";
print_r($arr);
echo '</pre>';

5、访问数组

数组定义完成后,若想要查看数组中某个具体的元素,则可以通过 “数组名[键]” 的方式获取。

$sub = ['PHP', 'Java', 'C', 'Android'];
$data = ['goods' => 'clothes', 'num' => 49.90, 'sales' => 500];
echo $sub[1]; // 输出结果:Java
echo $sub[3]; // 输出结果:Android
echo $data['goods']; // 输出结果:clothes
echo $data['sales']; // 输出结果:500 echo '<pre>';
print_r($sub); // print_r()函数打印数组变量$sub
var_dump($data); // var_dump()函数打印数组变量$data
echo '</pre>'; // print_r()打印结果
Array
(
[0] => PHP
[1] => Java
[2] => C
[3] => Android
) // var_dump()打印结果
array(3) {
["goods"]=>
string(7) "clothes"
["num"]=>
float(49.9)
["sales"]=>
int(500)
}

6、遍历数组

  • foreach
  • each
  • list
  • list、each

6.1、foreach

通常情况下,使用 foreach() 语句完成数组的遍历。

foreach (数组名称 as 键 => 值){
// 处理语句
}
foreach (数组名称 as 值) {
// 处理语句
} //实例:
$sub = ['PHP', 'Java', 'C', 'Android'];
$data = ['goods' => 'clothes', 'num' => 49.90, 'sales' => 500]; foreach ($data as $k => $v) {
echo $k . ': ' . $v . '<br>';
} foreach ($sub as $v) {
echo $v . '<br>';
}

6.2、each

  • each()函数返回一个包含数组当前元素键/值对应的数组,并将数组指针指向下一个数组元素。
  • each()函数返回的数组包含4个元素,元素键依次为1、value、0和key。1和value对应元素为原数组元素的0和key对应元素为原数组元素的
  • 如果数组指针指向了数组末尾(最后一个元素之后),则返回FALSE
$a = array("name" => "Mike", "sex" => "男", "age" => 30);
print_r($a);
echo "<br>";
while ($b = each($a)) {
// var_dump($b);
print_r($b);
echo "<br>";
} // 输出结果
Array ( [name] => Mike [sex] => 男 [age] => 30 )
Array ( [1] => Mike [value] => Mike [0] => name [key] => name )
Array ( [1] => 男 [value] => 男 [0] => sex [key] => sex )
Array ( [1] => 30 [value] => 30 [0] => age [key] => age )

6.3、list

list() 函数用于将数组中各个元素的值赋值给指定的变量。

list() 函数依次将下标为0、1、2…的数组元素赋值为指定的变量。

如果数组中的元素没有这些下标,变量值为NULL,PHP会产生一个Notice错误信息。

// 例一:
$a = array("one", "two", "three");
print_r($a);
list($x, $y, $z) = $a;
echo '<br>list($x, $y, $z) = $a'."<br>";
echo "\$x = $x &nbsp;&nbsp; \$y = $y &nbsp;&nbsp; \$z = $z";
// 输出结果
Array ( [0] => one [1] => two [2] => three )
list($x, $y, $z) = $a
$x = one $y = two $z = three // 例二:
$a = array(2 => "one", 1 => "two", 0 => "three");
print_r($a);
list($x, $y, $z) = $a;
echo '<br>list($x, $y, $z) = $a'."<br>";
echo "\$x = $x &nbsp;&nbsp; \$y = $y &nbsp;&nbsp; \$z = $z";
// 输出结果
Array ( [2] => one [1] => two [0] => three )
list($x, $y, $z) = $a
$x = three $y = two $z = one // 例三:
$a = array("one", "b" => "two", "three", "four");
print_r($a);
list($x, $y, $z) = $a;
echo '<br>list($x, $y, $z) = $a'."<br>";
echo "\$x = $x &nbsp;&nbsp; \$y = $y &nbsp;&nbsp; \$z = $z";
// 输出结果
Array ( [0] => one [b] => two [1] => three [2] => four )
list($x, $y, $z) = $a
$x = one $y = three $z = four // 例四:
$a = array("one", "two", 3 => "three", "four");
print_r($a);
list($x, $y, $z) = $a;
echo '<br>list($x, $y, $z) = $a'."<br>";
echo "\$x = $x &nbsp;&nbsp; \$y = $y &nbsp;&nbsp; \$z = $z";
// 输出结果
Array ( [0] => one [1] => two [3] => three [4] => four )
Notice: Undefined offset: 2 in D:\Program File\PHPStudy\PHPTutorial\WWW\index.php on line 14
list($x, $y, $z) = $a
$x = one $y = two $z =

6.4、list、each

$array=array(0 =>'PHP自学视频教程', 1 =>'JAVA自学视频教程', 2 =>'VB自学视频教程',3=>"VC自学视频教程");
//遍历数组中的数据
while(list($name,$value)=each($array)){
//输出遍历结果
echo "$name = $value"."<br>";
} // 输出结果
0 = PHP自学视频教程
1 = JAVA自学视频教程
2 = VB自学视频教程
3 = VC自学视频教程

7、创建数组的函数

  • range() 函数
  • array_combine() 函数:用两个数组创建一个新的数组
  • array_merge() 函数:将多个数组连接成一个新的数组。
  • + 运算符
  • array_fill()函数

7.1、range() 函数

语法格式:

array range( mixed $start, mixed $end[, number $step = 1] )
  • start:序列的第一个值。

  • end:序列结束于 end 的值。

  • step:如果设置了步长 step,会被作为单元之间的步进值。step 应该为正值。不设置step 则默认为 1。

$a = range(0, 5);
print_r($a); echo "<br>";
$b = range(5, 0);
print_r($b); echo "<br>";
$c = range(0.3, 5);
print_r($c); echo "<br>";
$d = range(1, 8, 2);
print_r($d); echo "<br>";
$e = range('a', 'e');
print_r($e); echo "<br>";
$f = range('a', 'e', 2);
print_r($f); // 输出结果
Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 [5] => 0 )
Array ( [0] => 0.3 [1] => 1.3 [2] => 2.3 [3] => 3.3 [4] => 4.3 )
Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 )
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e )
Array ( [0] => a [1] => c [2] => e )

7.2、array_combine() 函数

​用两个数组创建一个新的数组。一个数组的值作为其键名,另一个数组的值作为其值 。返回合并的 array,如果两个数组的单元数不同则返回 FALSE

​语法格式:

array array_combine( array $keys, array $values)

​ 示例:

$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b); echo "<pre>";
print_r($c);
echo "</pre>"; // 输出结果
Array
(
[green] => avocado
[red] => apple
[yellow] => banana
)

7.3、array_merge() 函数

​将多个数组连接成一个新的数组。一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

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

语法格式:

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

​ 示例:

$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2); echo "<pre>";
print_r($result);
echo "</pre>"; // 输出结果
Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)
$array1 = array();
$array2 = array(1 => "data");
$result = array_merge($array1, $array2); echo "<pre>";
print_r($result);
echo "</pre>"; // 数字键名将会被重新编号!
// 输出结果
Array
(
[0] => data
)
$array1 = array(1 => "data");
$array2 = array(1 => "data");
$result = array_merge($array1, $array2); echo "<pre>";
print_r($result);
echo "</pre>"; // 数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
// 输出结果
Array
(
[0] => data
[1] => data
)

7.4、 + 运算符

​ 第一个数组的键名将会被保留。在两个数组中存在相同的键名时,第一个数组中的同键名的元素将会被保留,第二个数组中的元素将会被忽略。

​ 示例:

$array1 = array("name" => 'Jom', "id" => '211606', "sex" => '男');
$array2 = array("lv" => '大学', "sex" => '女', "like" => 'swim');
$result1 = $array1 + $array2;
$result2 = array_merge($array1, $array2); echo "<pre>";
print_r($result1);
print_r($result2);
echo "</pre>"; // 输出结果
Array
(
[name] => Jom
[id] => 211606
[sex] => 男
[lv] => 大学
[like] => swim
)
Array
(
[name] => Jom
[id] => 211606
[sex] => 女
[lv] => 大学
[like] => swim
)

7.5、array_fill() 函数

​ 用给定的值填充数组。

​ 语法格式:

array array_fill( int $start_index, int $num, mixed $value)
  • start_index:返回的数组的第一个索引值。 如果 start_index 是负数,那么返回的数组的第一个索引将会是 start_index ,而后面索引则从0开始。

  • num:插入元素的数量。 必须大于或等于 0。

  • value:用来填充的值。

    示例:

$a = array_fill(5, 6, 'banana');
$b = array_fill(-2, 4, 'pear'); echo "<pre>";
print_r($a);
print_r($b);
echo "</pre>"; // 输出结果
Array
(
[5] => banana
[6] => banana
[7] => banana
[8] => banana
[9] => banana
[10] => banana
)
Array
(
[-2] => pear
[0] => pear
[1] => pear
[2] => pear
)

8、 数组函数

8.1、数组统计

  • count() 函数:用于对数组中的元素个数进行统计。
  • max() 函数:用于计算数组中元素的最大值。
  • min() 函数:用于计算数组中元素的最小值。
  • array_sum() 函数:用于计算数组中所有值的和。
  • array_count_values() 函数:用于计算数组中所有元素的值出现次数。

8.1.1、count() 函数

​ 用于对数组中的元素个数进行统计。

int count( mixed $array_or_countable[, int $mode = COUNT_NORMAL] )
  • array_or_countable: 数组或者 Countable 对象。

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

    示例:

$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
var_dump(count($a)); // 输出结果
int(3)
$food = array(
'fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard', 'pea')
); echo count($food, COUNT_RECURSIVE); // 输出 8
echo "<br>";
echo count($food); // 输出 2

8.1.2、max() 函数

​ 用于计算数组中元素的最大值。

mixed max( array $values)

​ 示例:

$a = array(3,6,9,5);
$b = array("a","b","c","d");
echo max($a); // 输出 9
echo "<br>";
echo max($b); // 输出 d

8.1.3、min() 函数

​ 用于计算数组中元素的最小值。

mixed min( array $values)

​ 示例:

$a = array(3,6,9,5);
$b = array("a","b","c","d");
echo min($a); // 输出 3
echo "<br>";
echo min($b); // 输出 a
$a = array(9,5,"a","b");
$b = array(-4,-1,"a","b");
echo min($a); // 输出 a
echo "<br>";
echo max($a); // 输出 9
echo "<br>";
echo min($b); // 输出 -4
echo "<br>";
echo max($b); // 输出 b

8.1.4、array_sum() 函数

​ 用于计算数组中所有值的和。

number array_sum( array $array)

​ 示例:

$a = array(2, 4, 6, 8);
echo "sum(a) = " . array_sum($a) . "<br>"; $b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
echo "sum(b) = " . array_sum($b) . "<br>"; $c = array(2, 4, 1.2, 2.3);
echo "sum(c) = " . array_sum($c) . "<br>"; $d = array("d", "c", "a", "b");
echo "sum(d) = " . array_sum($d) . "<br>"; $e = array(1, 1.2, "a", "b");
echo "sum(e) = " . array_sum($e) . "<br>"; // 输出结果
sum(a) = 20
sum(b) = 6.9
sum(c) = 9.5
sum(d) = 0
sum(e) = 2.2

8.1.5、array_count_values() 函数

​ 用于计算数组中元素出现次数。

array array_count_values( array $array )

​ 示例:

$array = array(1, "hello", 1, "world", "hello");
echo "<pre>";
print_r(array_count_values($array));
echo "</pre>"; // 输出结果
Array
(
[1] => 2
[hello] => 2
[world] => 1
)

8.2、数组指针

函数 说明
next() 使数组指针指向下一个元素。
prev() 使数组指针指向前一个元素。
end() 使数组指针指向最后一个元素。
reset() 使数组指针指向第一个元素。
current() 返回当前数组元素的值。
key() 返回当前数组元素的键名。
$a = array('foot', 'bike', 'car', 'plane');
// Array ( [0] => foot [1] => bike [2] => car [3] => plane ) print_r($a);
echo "<br>";
echo key($a)."<br>"; // 0
echo next($a)."<br>"; // bike
echo key($a)."<br>"; // 1 echo "<br>";
echo key($a)."<br>"; // 1
echo prev($a)."<br>"; // foot
echo key($a)."<br>"; // 0 echo "<br>";
echo key($a)."<br>"; // 0
echo end($a)."<br>"; // plane
echo key($a)."<br>"; // 3 echo "<br>";
echo key($a)."<br>"; // 3
echo reset($a)."<br>"; // foot
echo key($a)."<br>"; // 0

8.3、数组和变量之间的转换

函数 说明
extract () 使用数组定义一组变量
compact () 使用变量建立数组。

8.3.1、extract() 函数:使用数组定义一组变量

int extract( array &$array[, int $flags = EXTR_OVERWRITE[, string $prefix = NULL]] )
  • array:一个关联数组。此函数会将键名当作变量名,值作为变量的值。对每个键/值对都会在当前的符号表中建立变量,并受到 flags 和 prefix 参数的影响。
  • flags:对待非法/数字和冲突的键名的方法将根据取出标记 flags 参数决定。可以是以下值之一:
    • EXTR_OVERWRITE:默认,如果有冲突,覆盖已有的变量。
    • EXTR_SKIP:如果有冲突,不覆盖已有的变量。
    • EXTR_PREFIX_SAME:如果有冲突,在变量名前加上前缀 prefix。
    • EXTR_PREFIX_ALL:给所有变量名加上前缀 prefix。
    • EXTR_PREFIX_INVALID:仅在非法/数字的变量名前加上前缀 prefix。
    • EXTR_IF_EXISTS:仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。举个例子,以下情况非常有用:定义一些有效变量,然后从 $_REQUEST 中仅导入这些已定义的变量。
    • EXTR_PREFIX_IF_EXISTS:仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。
    • EXTR_REFS:将变量作为引用提取。这有力地表明了导入的变量仍然引用了 array 参数的值。可以单独使用这个标志或者在 flags 中用 OR 与其它任何标志结合使用。
  • prefix:仅在 flags 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。
$size = "large";
$var_array = array("color" => "blue", "size" => "medium", "shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx"); echo "$color, $size, $shape, $wddx_size\n"; // 输出结果
blue, large, sphere, medium
$arr = array("name"=>"张三","sex"=>"男","age"=>20);
extract($arr);
echo "$name, $sex, $age"; // 输出结果
张三, 男, 20

8.3.2、compact() 函数:使用变量建立数组

array compact( mixed $varname1[, mixed $...] )
$a = "asp";
$b = "php";
$c = "jsp";
$result = compact("a","b","c"); // 输出结果
Array ( [a] => asp [b] => php [c] => jsp )

8.4、数组检索函数

8.4.1、array_keys() 函数

​ 返回数组中部分的或所有的键名。

array array_keys( array $array[, mixed $search_value = null[, bool $strict = false]] )
  • input:一个数组,包含了要返回的键。
  • search_value:如果指定了这个参数,只有包含这些值的键才会返回。
  • strict:判断在搜索的时候是否该使用严格的比较(===)。
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array)); // Array ( [0] => 0 [1] => color )
echo "<br>"; $array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue")); // Array ( [0] => 0 [1] => 3 [2] => 4 )
echo "<br>"; $array = array("color" => array("blue", "red", "green"),
"size" => array("small", "medium", "large"));
print_r(array_keys($array)); // Array ( [0] => color [1] => size )

8.4.2、array_values() 函数

​ 获取数组中所有的值。

array array_values( array $array)
$array = array ("手册" => "php函数手册", "php基础应用",
"php" => "php函数手册", "php基础应用", "php典型案例");
$result = array_values($array); echo "<pre>";
print_r($result);
echo "</pre>"; // 输出结果
Array
(
[0] => php函数手册
[1] => php基础应用
[2] => php函数手册
[3] => php基础应用
[4] => php典型案例
)

8.4.3、in_array () 函数

​ 检查数组中是否存在某个值

bool in_array( mixed $needle, array $haystack[, bool $strict = FALSE] )
  • needle:待搜索的值。 如果 needle 是字符串,则比较是区分大小写的。
  • haystack:待搜索的数组。
  • strict:如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix"."<br>"; // 没输出
}
if (in_array("mac", $os)) {
echo "Got mac"."<br>"; // 输出
} $a = array('1.10', 12.4, 1.13);
if (in_array('12.4', $a, true)) {
echo "'12.4' found with strict check"."<br>"; // 没输出
}
if (in_array(1.13, $a, true)) {
echo "1.13 found with strict check"."<br>"; // 输出
}

8.4.4、array_search () 函数

​ 在数组中搜索给定的值,如果成功则返回首个相应的键名。

mixed array_search( mixed $needle, array $haystack[, bool $strict = false] )

​ 参数说明同 in_array () 函数。

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;

8.4.5、array_key_exists () 函数

​ 检查数组里是否有指定的键名或索引。仅仅搜索第一维的键。多维数组里嵌套的键不会被搜索到。

bool array_key_exists( mixed $key, array $array)
$array = array("php" => 58, "ajax" => 54);
if (array_key_exists("php", $array)) {
echo "php在数组中"; // 有输出
}

8.4.6、array_unique() 函数

​ 删除数组中重复的数。 注意键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。

array array_unique( array $array[, int $sort_flags = SORT_STRING] )
  • array:输入的数组。
  • sort_flags:第二个可选参数sort_flags 可用于修改排序行为:
    • 排序类型标记:

      ◦ SORT_REGULAR - 按照通常方法比较(不修改类型)

      ◦ SORT_NUMERIC - 按照数字形式比较

      ◦ SORT_STRING - 按照字符串形式比较

      ◦ SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
echo "<pre>";
print_r($result);
echo "</pre>"; // 输出结果
Array
(
[a] => green
[0] => red
[1] => blue
)

8.5、数组排序

函数名称 功能描述
sort () 根据元素值升序排序,排序后元素的下标按顺序为0、1、2…
asort () 根据元素值升序排序,保持原有的键值
rsort () sort () 的逆序
arsort () asort () 的逆序
ksort () 根据键升序排序,保持键值对
krsort () ksort () 的逆序
natsort () 对值按照 “自然排序” 升序,保持键值对。
natcasesort () 对值按照 “自然排序” 升序,不区分大小写,保持键值对。

8.5.1、sort () 函数

​ 根据元素值升序排序,排序后的数组赋予新的“整数”键名。

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 位运算),不区分大小写排序字符串。
$fruits = array("a" => "lemon", "b" => "orange", "d" => "banana", "h" => "apple");
print_r($fruits);
echo "<br>";
sort($fruits); print_r($fruits);
echo "<br>";
foreach ($fruits as $key => $val) {
echo "fruits[" . $key . "] = " . $val . "<br>";
} // 输出结果
Array ( [a] => lemon [b] => orange [d] => banana [h] => apple )
Array ( [0] => apple [1] => banana [2] => lemon [3] => orange )
fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange

8.5.2、asort () 函数

​ 对数组进行排序并保持索引关系。

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

​ 参数说明与 sort () 函数一致。

$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val) {
echo "$key => $val"."<br>";
} // 输出结果
c => apple
b => banana
d => lemon
a => orange

8.5.3、ksort () 函数

​ 根据数组元素的“键名”以升序排序。

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

​ 参数说明与 sort () 函数一致。

$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
echo "$key => $val"."<br>";
} // 输出结果
a => orange
b => banana
c => apple
d => lemon

8.6、数组与数据结构

函数 说明
array_push () 将一个或多个单元压入数组的末尾(入栈)
array_pop () 弹出数组最后一个单元(出栈)
array_shift () 将数组开头的单元移出数组
array_unshift () 在数组开头插入一个或多个单元
int array_push( array &$array, mixed $value1[, mixed $...] );
mixed array_pop( array &$array);
mixed array_shift( array &$array);
int array_unshift( array &$array, mixed $value1[, mixed $...] )
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);
// Array ( [0] => orange [1] => banana [2] => apple [3] => raspberry )
echo "<br>"; $stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack); // $fruit = raspberry
print_r($stack);
// Array ( [0] => orange [1] => banana [2] => apple )
echo "<br>"; $stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack); // $fruit = orange
print_r($stack);
// Array ( [0] => banana [1] => apple [2] => raspberry )
echo "<br>"; $queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
// Array ( [0] => apple [1] => raspberry [2] => orange [3] => banana )

8.7、数组集合

函数 说明
array_diff () 用于求数组集合的差集
array_intersect () 用于求数组集合的交集
array array_diff( array $array1, array $array2[, array $...] );
array array_intersect( array $array1, array $array2 [, array $...] )
$a = array("a" => "green", "red", "blue", "red");
$b = array("b" => "green", "yellow", "red");
$c = array_diff($a, $b);
print_r($c); // Array ( [1] => blue ) $a = array("a" => "green", "red", "blue", "red");
$b = array("b" => "green", "yellow", "red");
$c = array_intersect($a, $b);
print_r($c); // Array ( [a] => green [0] => red [2] => red )

8.8、反转数组

​ 返回单元顺序相反的数组 。

array array_reverse( array $array[, bool $preserve_keys = false] )
$input  = array("php", 4.0, array("green", "red"));
$reversed = array_reverse($input);
$preserved = array_reverse($input, true); print_r($input);
print_r($reversed);
print_r($preserved); // 输出结果
Array ( [0] => php [1] => 4 [2] => Array ( [0] => green [1] => red ) )
Array ( [0] => Array ( [0] => green [1] => red ) [1] => 4 [2] => php )
Array ( [2] => Array ( [0] => green [1] => red ) [1] => 4 [0] => php )

PHP 笔记——Array 数组的更多相关文章

  1. Javascript进阶篇——( JavaScript内置对象---下)--Array数组对象---笔记整理

    Array 数组对象数组对象是一个对象的集合,里边的对象可以是不同类型的.数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的数组定义的方法: 1. 定义了一个空数组: var ...

  2. PHP学习笔记之数组篇

    摘要:其实PHP中的数组和JavaScript中的数组很相似,就是一系列键值对的集合.... 转载请注明来源:PHP学习笔记之数组篇   一.如何定义数组:在PHP中创建数组主要有两种方式,下面就让我 ...

  3. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  4. 了解PHP中的Array数组和foreach

    1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组    . 2.例子:一般的数组 这里,我 ...

  5. es6学习笔记一数组(上)

    最近公司没什么事情,我们老大让我看看es6,小颖就练习了下数组的各个方法,今天先给大家分享一部分.嘻嘻,希望对大家有所帮助. every方法: 概述:    every() 方法测试数组的所有元素是否 ...

  6. es6学习笔记一数组(下)

    entries() 方法: 概述:    entries() 方法返回一个 Array Iterator(数组迭代) 对象,该对象包含数组中每一个索引的键值对. 示例: let arr = [&quo ...

  7. JavaScript的json和Array及Array数组的使用方法

    1.关于json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.也可以称为数据集和数组类似,能够存数据! //Ar ...

  8. iOS -Swift 3.0 -Array(数组与可变数组相关属性及用法)

    // // ViewController.swift // Swift-Array // // Created by luorende on 16/9/12. // Copyright © 2016年 ...

  9. 多动手试试,其实List类型的变量在页面上取到的值可以直接赋值给一个js的Array数组变量

    多动手试试,其实List类型的变量在页面上取到的值可以直接赋值给一个js的Array数组变量,并且数组变量可以直接取到每一个元素var array1 = '<%=yearList =>'; ...

随机推荐

  1. R1(下)—数据挖掘—关联规则理论介绍与R实现

    Apriori algorithm是关联规则里一项基本算法.是由Rakesh Agrawal和Ramakrishnan Srikant两位博士在1994年提出的关联规则挖掘算法.关联规则的目的就是在一 ...

  2. 【BZOJ】3238: [Ahoi2013]差异

    [题意]给定长度为n的小写字母字符串,令Ti表示以i开头的后缀,求Σ[Ti+Tj-2*lcp(Ti,Tj)],1<=i<j<=n. [算法]后缀自动机 [题解]Σ(Ti+Tj)只与n ...

  3. 母版页 VS shtml—ASP.NET细枝末节(3)

    这算是html的重用吧? 网页很多地方长得一样,也有不一样的地方. 把网页中一样的地方,提取出来,形成一个文档. 在其他网页中引用,是网站开发的一个传统的思维. 当然不同的技术有不同的表现形式. 例如 ...

  4. 【IDEA】IDEA中maven项目pom.xml依赖不生效解决

    问题: 今天在web项目中需要引入poi相关jar包.查看之下才发现pom.xml中的依赖虽然已经下载到了本地仓库 repository,但是却没有加入到项目路径的 Extenal Libraries ...

  5. 【appium】根据UIAutomator定位元素等等资料

    https://www.cnblogs.com/paulwinflo/p/4742529.html http://www.cnblogs.com/meitian/p/6103391.html http ...

  6. SSL handshake failed: SSL error: Key usage violation in certificate has been detected.

    sudo apt-get install libneon27-dev cd /usr/libsudo mv libneon-gnutls.so.27 libneon-gnutls.so.27.olds ...

  7. HDU 5936 朋友

    题意为给出一棵n个节点的树,这棵树的每条边有一个权值,这个权值只可能是0或1. 在一局游戏开始时,会确定一个节点作为根. 当一方操作时,他们需要先选择一个不为根的点,满足该点到其父亲的边权为1; 然后 ...

  8. 读书笔记 effective c++ Item 4 确保对象被使用前进行初始化

    C++在对象的初始化上是变化无常的,例如看下面的例子: int x; 在一些上下文中,x保证会被初始化成0,在其他一些情况下却不能够保证.看下面的例子: class Point { int x,y; ...

  9. LINUX内核中的机制OOM

    [概念] LINUX内核中有一个机制叫做OOM killer(Out Of Memery killer) 该机制监控内存占用过大,尤其是瞬间消耗大量内存的进程, 为了防止内存被耗尽,所以OOM kil ...

  10. PHP利用rand(1,100)函数产生10个1~100之间的随机数

    //echo rand(1,100); $max=0; $min=100; for($i=0;$i<=9;$i++){ $rand[$i]=rand(1,100); if($rand[$i]&g ...