§7.PHP数组
数组实际上是一个有序映射的集合,映射是一种把values关联keys的类型,值与键组成的键值对称为元素
2. 分类
?按Key类型分组
索引数组 键是整数0,1,2,3,的数组
$array = array(1, 2
1. 概念 数组实际上是一个有序映射的集合,映射是一种把values关联keys的类型,值与键组成的键值对称为元素 2. 分类 ?按Key类型分组 索引数组 键是整数0,1,2,3,的数组 $array = array(1, 2, 3, 4); 关联数组 键是整数或字符串 $array = array("M" => "May","J" => "Jax,); 混合数组 键既有字符串,又有整数 $array= array( “foo”=>”bar”, 1=>2); ?按维度分组 一维:$array=array( ‘foo’=>’bar’) 二维:数组中的一个或多个元素是数组 三维:数组中的一个或多个元素是数组且包含一个数组 多维:..... 3. 创建 ·方法一:$Arr = array(“hello”, “world”, “haha”) ·方法二:$Arr=[“hello”, “world” , “haha”] ·方法三:$Arr[Key]=”Value” 4. 指针 创建一个数组时,指针默认指向数组的第一个元素 Key($arr) - 获取当前数组元素的键 Current($arr) - 获取当前数组元素的值 prev($arr) - 将数组的内部指针倒回一位 Next($arr) - 将当前的指针后(右)移 Reset($arr) - 将指针复位 5. 遍历Foreach 格式一,取键与值: Foreach($Array as $Key => $Value){ Expression; } 格式二,只取值: Foreach($Array as $Value){ Expression; } ※ Foreach遍历原数组的副本,并不能更改每个元素的值,若需要该值,则加上“&” ※ 不支持用"@"抑制错误信息 6. 提取List ---list()可以在把数组中的值赋给一组变量,仅用于索引数组,并假定索引从 0 开始,对字符串不起作用 $info = array('coffee', 'brown', 'caffeine'); // 列出所有变量 list($drink, $color, $power) = $info; echo "$drink is $color and $power makes it special."; // 列出他们的其中一个 list($drink, , $power) = $info; echo "$drink has $power. "; 7. 当前值Each ---返回数组中当前的键/值对并将数组指针向前移动一步,键值对被返回为四个单元的数组,键为:0,1,key和 value,0和key 包含有数组单元的键名,1 和 value 包含有数据 $foo = array("Robert" => "Bob", "Seppo" => "Sepi"); $bar = each($foo); print_r($bar); Array ( [1] => Bob [value] => Bob [0] => Robert [key] => Robert ) 8. each和list结合遍历 $fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'); reset($fruit); while (list($key, $val) = each($fruit)) { echo "$key => $val\n"; } 以上例程会输出: a => apple b => banana c => cranberry 9. 常用函数 is_array ( $var ) //检测变量是否是数组 in_array ($needle, $haystack ,[ bool $strict = FALSE ] ) //判断一个元素是否在数组中,返回布尔,如果第三个参数值为TRUE则检查类型是否相同 range ( $start , $end , [number $step = 1 ]) //建立一个包含指定范围单元的数组 array_merge( $array1,array2,array3.... ) //合并一个或多个索引数组,与追加内容无异。若是索引数组,键相同则将后者值覆盖前者,键不同则追加 array_rand($array , $number) //从数组中取出一个或多个随机的元素,并返回他们的键 shuffle ( &$array ) //打乱一个数组 array_push ( &$array , $value1, [$... ] ) //将一个元素添加到数组的末尾,如果给数组增加一个元素,还不如用 $array[] = array_pop(&$array) //弹出数组最后一个单元(出栈) array_unshift(&$array , $value1 , [$... ] ) //在数组开头插入元素,所有的数值键名将从零开始,所有文字键名保持不变 array_shift(&$array) //移出数组开头元素并作为结果返回,长度减一,所有其它单元向前移动一位。所有的数字键名从零开始计数,文字键名不变 10.排序函数 sort ( &$array , [int $sort_flags = SORT_REGULAR ]) //按数组值升序重排,只能是索引数组,关联数组被自动转 rsort ( &$array , ...) //按数组值降序重排,若值完全相等则不定义其顺序,甩至末尾 第三个参数: SORT_REGULAR - 正常比较单元(不改变类型) SORT_NUMERIC - 单元被作为数字来比较 SORT_STRING - 单元被作为字符串来比较 SORT_NATURAL - 对每个单元以"自然的顺序"对字符串进行排序(PHP 5.4.0) asort ( &$array ,[$sort_flags = SORT_REGULAR ] ) 按值的升序排列,且键值绑定 arsort ( &$array ,..) 按值的降序排列php指针,且键值绑定 ksort ( &$array, [ $sort_flags = SORT_REGULAR ] ) 按键的升序排列,且键值绑定 krsort ( &$array, ...) 按键的降序排列,且键值绑定 ?冒泡排序原理 $arr=[16,4,5,6,3,15,11,7]; $n = Count($arr); For($i=0; $i (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |