要点 说明
数组构成 数组是由一个或多个数组元素组成的
数组元素 每个数组元素由键(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. 区分IE8 、IE9 的专属css hack

    一般来说,我们写的结构比较好的时候,IE8/9下是没区别的.所以可能很少人关注只有IE8或只有IE9才识别的css hack. 因为IE8及以下版本是不支持CSS3的,但是我们如果使用css3,在IE ...

  2. NYOJ 1063 生活的烦恼 (二叉树)

    题目链接 描述 生活的暑假刚集训开始,他要决心学好字典树,二叉树,线段树和各种树,但生活在OJ上刷题的时候就遇到了一个特别烦恼的问题.那当然就是他最喜欢的二二叉树咯!题目是这样的:给你一颗非空的二叉树 ...

  3. layui利用jQuery设置下拉列表的值

    今天在利用jQuery动态设置下拉列表的值的时候确怎么也赋值不上去,其中用到了layui框架,源代码如下: $.post(contextPath+'/courseLibrary/getCourseBa ...

  4. 转: oracle中schema指的是什么?

    看来有的人还是对schema的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助. 我们先来看一下他们的定义:A schema is a collection of database obje ...

  5. KKT条件和拉格朗日乘子法详解

    \(\frac{以梦为马}{晨凫追风}\) 最优化问题的最优性条件,最优化问题的解的必要条件和充分条件 无约束问题的解的必要条件 \(f(x)\)在\(x\)处的梯度向量是0 有约束问题的最优性条件 ...

  6. 【转载】C#异常Retry通用类

    //Retry机制 public static class Retry { /// <summary> /// 重试零个参数无返回值的方法 /// </summary> /// ...

  7. 191.Number of 1Bits---位运算---《剑指offer》10

    题目链接:https://leetcode.com/problems/number-of-1-bits/description/ 题目大意:与338题类似,求解某个无符号32位整数的二进制表示的1的个 ...

  8. css预处理scss环境配置

    css 预处理器 CSS 预处理器用一种专门的编程语言,进行 Web css编码,然后再编译成正常的 CSS 文件,以供项目使用:说简单点就是在某个环境下写css 可以写变量.表达式.嵌套等,在通过该 ...

  9. 《深入理解Java虚拟机》笔记--第三章 、垃圾收集器与内存分配策略

    1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言. Java的垃圾收集(Garbage Collection)主要关注堆和方法区的内存回收. 在GC堆进行回收前,第一件 ...

  10. POJ 2348 Euclid's Game(辗转相除博弈+自由度分析)

    题目链接:http://poj.org/problem?id=2348 题目大意:给你两个数a,b,Stan和Ollie轮流操作,每次可以将较大的数减去较小的数的整数倍,相减后结果不能小于0,谁先将其 ...