要点 说明
数组构成 数组是由一个或多个数组元素组成的
数组元素 每个数组元素由键(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. jquery键盘事件全记录

    很多时候,我们需要获取用户的键盘事件,下面就一起来看看jquery是如何操作键盘事件的. 一.首先需要知道的是: 1.keydown() keydown事件会在键盘按下时触发. 2.keyup() k ...

  2. Hadoop 面试总结

    1.简要描述如何安装配置一个开源的hadoop,只描述即可,列出完整步骤. a.创建一个用户和用户组,用来管理hadoop项目 b.修改确定ip地址:vim /etc/sysconfig/networ ...

  3. 详解H5中的history单页面,手动实现单页面开发,细说h5单页面原理

    就目前来看,前端的单页面开发占了很大一部分,一方面无刷新的切换增强了体验,并且浏览器记录依然存在,前进后退都没问题,在之前我们通地址栏中的hash改变来触发onhashchange方法来实现单页面应用 ...

  4. Linux增加swap文件

    起因 在阿里云搞了台ECS,但是内存就1个G,操作总是悲剧的卡卡卡,于是就想着增加一点交换文件来缓解一下. 快速添加交换文件 step 1. 生成文件 先填充一个大文件,等会儿当做交换文件用: dd ...

  5. eclipse启动项目

    今天做的任务不多,没有自己写代码,上午看了些文章,下午我司后台给配了配项目环境,全装C盘了..以后有我好受的.. 看着后台操作,修改了N多配置,tomcat.redis.zkServer..Nginx ...

  6. matlab求逆运算:左除( \ )和右除( / ),inv,pinv

    矩阵求逆可以使用左除(\)和右除(/),inv,pinv 首先了解需要求逆的矩阵A是否为奇异方阵 inv 若A为非奇异方阵,则存在逆矩阵,可利用inv求逆: inv(A) pinv 若需要求逆的矩阵A ...

  7. 初学Memcached安装及使用【转】

    1.yum install memcached安装memecached 2.chkconfig memcached on设置memcached开机启动 3.service memcached star ...

  8. selenium只打开一个浏览器窗口

    from selenium.webdriver import Remote from selenium.webdriver.chrome import options from selenium.co ...

  9. Dev Express 安装

    Dev Express 安装 点击DevExpressUniversalTrialComplete-20151209.exe开始安装 选择需要安装的产品   选择需要安装的产品目录,这里设置为D盘 开 ...

  10. 《深入理解Java虚拟机》笔记--第十二章、Java内存模型与线程

    主要内容:虚拟机如何实现多线程.多线程之间由于共享和竞争数据而导致的一系列问题及解决方案. Java内存模型:     Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储 ...