[TOC] 数组是在程序设计中,为了处理方便, 把若干变量按有序的形 式组织起来的一种形式。这些按序排列的同类数据元素的集合 称为数组。 数组能够在单独的变量名中存储一个或多个值。 ## 什么是数组? >[success]数组是特殊的变量,它可以同时保存一个以上的值。 ## 创建数组 在 PHP 中, array() 函数用于创建数组: ~~~ <?php $arr = [];//方式1:直接定义一个空数组 $arr[0]="北京";//附值 $arr[0]="广州";//附值 $arr = array()//方式2:用array() $arr = array("北京","广州");//创建并附值 ?> ~~~ ## 三种数组类型 ### 索引数组 - 带有数字索引的数组 ~~~ <?php $$cars[0]="Volvo"; $cars[1]="BMW"; $cars[2]="SAAB"; ?> ~~~ ### 关联数组 - 带有指定键的数组 ~~~ <?php $age["Peter"]="35"; $age["Ben"]="37"; $age["Joe"]="43"; ?> ~~~ ### 多维数组 - 包含一个或多个数组的数组 ~~~ <?php $cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) ); ?> ~~~ ## foreach 循环(数组循环) foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。 ~~~ <?php //方式1:循环值 foreach ($array as $value) { code to be executed; //每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。 } //方式2:循环值与键(下标) foreach ($array as $key => $value) { code to be executed; } ?> ~~~ ## Array 函数 >[success] 数组函数允许您访问和操作数组。支持单维和多维数组。 <table class="dataintable"> <tbody> <tr> <th> 函数 </th> <th> 描述 </th> </tr> <tr> <td> <a> array() </a> </td> <td> <code class=" language-php">(注意)</code>创建数组。 </td> </tr> <tr> <td> <a> array_change_key_case() </a> </td> <td> 把数组中所有键更改为小写或大写。 </td> </tr> <tr> <td> <a> array_chunk() </a> </td> <td> 把一个数组分割为新的数组块。 </td> </tr> <tr> <td> <a> array_column() </a> </td> <td> 返回输入数组中某个单一列的值。 </td> </tr> <tr> <td> <a> array_combine() </a> </td> <td> 通过合并两个数组来创建一个新数组。 </td> </tr> <tr> <td> <a> array_count_values() </a> </td> <td> 用于统计数组中所有值出现的次数。 </td> </tr> <tr> <td> <a> array_diff() </a> </td> <td> <code class=" language-php">(注意)</code>比较数组,返回差集(只比较键值)。 </td> </tr> <tr> <td> <a> array_diff_assoc() </a> </td> <td> 比较数组,返回差集(比较键名和键值)。 </td> </tr> <tr> <td> <a> array_diff_key() </a> </td> <td> 比较数组,返回差集(只比较键名)。 </td> </tr> <tr> <td> <a> array_diff_uassoc() </a> </td> <td> 比较数组,返回差集(比较键名和键值,使用用户自定义的键名比较函数)。 </td> </tr> <tr> <td> <a> array_diff_ukey() </a> </td> <td> 比较数组,返回差集(只比较键名,使用用户自定义的键名比较函数)。 </td> </tr> <tr> <td> <a> array_fill() </a> </td> <td> 用给定的键值填充数组。 </td> </tr> <tr> <td> <a> array_fill_keys() </a> </td> <td> 用指定键名的给定键值填充数组。 </td> </tr> <tr> <td> <a> array_filter() </a> </td> <td> 用回调函数过滤数组中的元素。 </td> </tr> <tr> <td> <a> array_flip() </a> </td> <td> 交换数组中的键和值。 </td> </tr> <tr> <td> <a> array_intersect() </a> </td> <td> 比较数组,返回交集(只比较键值)。 </td> </tr> <tr> <td> <a> array_intersect_assoc() </a> </td> <td> 比较数组,返回交集(比较键名和键值)。 </td> </tr> <tr> <td> <a> array_intersect_key() </a> </td> <td> 比较数组,返回交集(只比较键名)。 </td> </tr> <tr> <td> <a> array_intersect_uassoc() </a> </td> <td> 比较数组,返回交集(比较键名和键值,使用用户自定义的键名比较函数)。 </td> </tr> <tr> <td> <a> array_intersect_ukey() </a> </td> <td> 比较数组,返回交集(只比较键名,使用用户自定义的键名比较函数)。 </td> </tr> <tr> <td> <a> array_key_exists() </a> </td> <td> 检查指定的键名是否存在于数组中。 </td> </tr> <tr> <td> <a> array_keys() </a> </td> <td> <code class=" language-php">(注意)</code>返回数组中所有的键名。 </td> </tr> <tr> <td> <a> array_map() </a> </td> <td> 把数组中的每个值发送到用户自定义函数,返回新的值。 </td> </tr> <tr> <td> <a> array_merge() </a> </td> <td> <code class=" language-php">(注意)</code>把一个或多个数组合并为一个数组。 </td> </tr> <tr> <td> <a> array_merge_recursive() </a> </td> <td> 递归地合并一个或多个数组。 </td> </tr> <tr> <td> <a> array_multisort() </a> </td> <td> 对多个数组或多维数组进行排序。 </td> </tr> <tr> <td> <a> array_pad() </a> </td> <td> 用值将数组填补到指定长度。 </td> </tr> <tr> <td> <a> array_pop() </a> </td> <td> <code class=" language-php">(注意)</code>删除数组的最后一个元素(出栈)。 </td> </tr> <tr> <td> <a> array_product() </a> </td> <td> 计算数组中所有值的乘积。 </td> </tr> <tr> <td> <a> array_push() </a> </td> <td> <code class=" language-php">(注意)</code>将一个或多个元素插入数组的末尾(入栈)。 </td> </tr> <tr> <td> <a> array_rand() </a> </td> <td> <code class=" language-php">(注意)</code>返回数组中一个或多个随机的键。 </td> </tr> <tr> <td> <a> array_reduce() </a> </td> <td> 通过使用用户自定义函数,以字符串返回数组。 </td> </tr> <tr> <td> <a> array_replace() </a> </td> <td> <code class=" language-php">(注意)</code>使用后面数组的值替换第一个数组的值。 </td> </tr> <tr> <td> <a> array_replace_recursive() </a> </td> <td> 递归地使用后面数组的值替换第一个数组的值。 </td> </tr> <tr> <td> <a> array_reverse() </a> </td> <td> 以相反的顺序返回数组。 </td> </tr> <tr> <td> <a> array_search() </a> </td> <td> 搜索数组中给定的值并返回键名。 </td> </tr> <tr> <td> <a> array_shift() </a> </td> <td> <code class=" language-php">(注意)</code>删除数组中首个元素,并返回被删除元素的值。 </td> </tr> <tr> <td> <a> array_slice() </a> </td> <td> <code class=" language-php">(注意)</code>返回数组中被选定的部分。 </td> </tr> <tr> <td> <a> array_splice() </a> </td> <td> <code class=" language-php">(注意)</code>删除并替换数组中指定的元素。 </td> </tr> <tr> <td> <a> array_sum() </a> </td> <td> 返回数组中值的和。 </td> </tr> <tr> <td> <a> array_udiff() </a> </td> <td> 比较数组,返回差集(只比较值,使用一个用户自定义的键名比较函数)。 </td> </tr> <tr> <td> <a> array_udiff_assoc() </a> </td> <td> 比较数组,返回差集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。 </td> </tr> <tr> <td> <a> array_udiff_uassoc() </a> </td> <td> 比较数组,返回差集(比较键和值,使用两个用户自定义的键名比较函数)。 </td> </tr> <tr> <td> <a> array_uintersect() </a> </td> <td> 比较数组,返回交集(只比较值,使用一个用户自定义的键名比较函数)。 </td> </tr> <tr> <td> <a> array_uintersect_assoc() </a> </td> <td> 比较数组,返回交集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。 </td> </tr> <tr> <td class="no_wrap"> <a> array_uintersect_uassoc() </a> </td> <td> 比较数组,返回交集(比较键和值,使用两个用户自定义的键名比较函数)。 </td> </tr> <tr> <td> <a> array_unique() </a> </td> <td> <code class=" language-php">(注意)</code>删除数组中的重复值。 </td> </tr> <tr> <td> <a> array_unshift() </a> </td> <td> <code class=" language-php">(注意)</code>在数组开头插入一个或多个元素。 </td> </tr> <tr> <td> <a> <code class=" language-php">(注意)</code>array_values() </a> </td> <td> 返回数组中所有的值。 </td> </tr> <tr> <td> <a> array_walk() </a> </td> <td> 对数组中的每个成员应用用户函数。 </td> </tr> <tr> <td> <a> array_walk_recursive() </a> </td> <td> 对数组中的每个成员递归地应用用户函数。 </td> </tr> <tr> <td> <a> arsort() </a> </td> <td> <code class=" language-php">(注意)</code> 对关联数组按照键值进行降序排序。 </td> </tr> <tr> <td> <a> asort() </a> </td> <td> <code class=" language-php">(注意)</code>对关联数组按照键值进行升序排序。 </td> </tr> <tr> <td> <a> compact() </a> </td> <td> 创建包含变量名和它们的值的数组。 </td> </tr> <tr> <td> <a> count() </a> </td> <td> <code class=" language-php">(注意)</code>返回数组中元素的数目。 </td> </tr> <tr> <td> <a> current() </a> </td> <td> <code class=" language-php">(注意)</code>返回数组中的当前元素。 </td> </tr> <tr> <td> <a> each() </a> </td> <td> 返回数组中当前的键/值对。 </td> </tr> <tr> <td> <a> end() </a> </td> <td> 将数组的内部指针指向最后一个元素。 </td> </tr> <tr> <td> <a> extract() </a> </td> <td> 从数组中将变量导入到当前的符号表。 </td> </tr> <tr> <td> <a> in_array() </a> </td> <td> <code class=" language-php">(注意)</code>检查数组中是否存在指定的值。 </td> </tr> <tr> <td> <a> key() </a> </td> <td> <code class=" language-php">(注意)</code>从关联数组中取得键名。 </td> </tr> <tr> <td> <a> krsort() </a> </td> <td> <code class=" language-php">(注意)</code>对数组按照键名逆向排序。 </td> </tr> <tr> <td> <a> ksort() </a> </td> <td> <code class=" language-php">(注意)</code>对数组按照键名排序。 </td> </tr> <tr> <td> <a> list() </a> </td> <td> 把数组中的值赋给一些变量。 </td> </tr> <tr> <td> <a> natcasesort() </a> </td> <td> 用“自然排序”算法对数组进行不区分大小写字母的排序。 </td> </tr> <tr> <td> <a> natsort() </a> </td> <td> 用“自然排序”算法对数组排序。 </td> </tr> <tr> <td> <a> next() </a> </td> <td> 将数组中的内部指针向前移动一位。 </td> </tr> <tr> <td> <a> pos() </a> </td> <td> current() 的别名。 </td> </tr> <tr> <td> <a> prev() </a> </td> <td> 将数组的内部指针倒回一位。 </td> </tr> <tr> <td> <a> range() </a> </td> <td> 创建包含指定范围单元的数组。 </td> </tr> <tr> <td> <a> reset() </a> </td> <td> 将数组的内部指针指向第一个元素。 </td> </tr> <tr> <td> <a> rsort() </a> </td> <td> <code class=" language-php">(注意)</code>对数组逆向排序。 </td> </tr> <tr> <td> <a> shuffle() </a> </td> <td> <code class=" language-php">(注意)</code>将数组打乱。 </td> </tr> <tr> <td> <a> sizeof() </a> </td> <td> count() 的别名。 </td> </tr> <tr> <td> <a> sort() </a> </td> <td> <code class=" language-php">(注意)</code>对数组排序。 </td> </tr> <tr> <td> <a> uasort() </a> </td> <td> 使用用户自定义的比较函数对数组中的键值进行排序。 </td> </tr> <tr> <td> <a> uksort() </a> </td> <td> 使用用户自定义的比较函数对数组中的键名进行排序。 </td> </tr> <tr> <td> <a> usort() </a> </td> <td> 使用用户自定义的比较函数对数组进行排序。 </td> </tr> </tbody> </table> >[danger] 练习:构建自己的一个方法,实现对数组的排序。