PHP中的数组函数

    技术2025-05-19  83

    array ()函数的作用是创建一个数组。如果省略了索引,会自动产生从 0 开始的整数索引。如果索引是整数,则下一个产生的索引将是目前最大的整数索引 + 1。注意如果定义了两个完全一样的索引,则后面一个会覆盖前一个。array()函数的最后一项后面可以添加一个“,”,但不起任何作用。

    <?php$array = array(1, 1, 1, 1, 1, 8 => 1, 4 => 1, 19, 3 => 13,);print_r($array);/* 显示Array(    [0] => 1    [1] => 1    [2] => 1    [3] => 13    [4] => 1    [8] => 1    [9] => 19)*/?>range ()函数的作用是建立一个包含指定范围单元的数组,range()函数的第一个参数表示开始单元的值,第二个参数表示最后一个单元的值,第三个参数表示值的跨度,第三个参数的默认值为1。第一第二个参数如果输入了字符串,将会截取第一个字母,建立字母为值的数组。

    <?php$number = range(100, 0, 20);print_r($number);/* 显示Array(    [0] => 100    [1] => 80    [2] => 60    [3] => 40    [4] => 20    [5] => 0)*/$number = range("g", "a", 2);print_r($number);/* 显示Array(    [0] => g    [1] => e    [2] => c    [3] => a)*/?>compact()函数可以将变量转变为数组,$key为变量的名称,$value为变量的值。compact()函数的操作可以通过数组递归地完成。

    <?php$name = "Bom";$result = compact("name");print_r($result); // 显示 Array ( [name] => Bom )$name = "Bom";$age = 25;$city = "shanghai";$result = compact(array("name", "age", "city"));print_r($result);/* 显示Array(    [name] => Bom    [age] => 25    [city] => shanghai)*/?>extract ()函数的作用是将一个数组的键值作为变量名,将数组的值作为变量的值进行批量赋值,extract()函数的第二个参数有8个常量参数可以选择:EXTR_OVERWRITE:如果有冲突,覆盖已有的变量;EXTR_SKIP:如果有冲突,不覆盖已有的变量; EXTR_PREFIX_SAME:如果有冲突,在变量名前加上第三个参数作为前缀;EXTR_PREFIX_ALL:给所有变量名前加上第三个参数作为前缀;EXTR_PREFIX_INVALID:仅在非法/数字的变量名前加上第三个参数作为前缀;EXTR_IF_EXISTS:仅在当前已有同名变量时,覆盖它们的值;EXTR_PREFIX_IF_EXISTS:仅在当前已有同名变量时,建立第三个参数作为前缀;EXTR_REFS:将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用。在需要的情况下,会使用第三个参数作为新变量名的前缀。

    <?php$size = "large";$var_array = array("color" => "blue",                   "size" => "medium",                   "shape" => "sphere");extract($var_array, EXTR_PREFIX_SAME, "wddx");echo "$color, $size, $shape, $wddx_size";// 显示 blue, large, sphere, medium ?>array_combine()函数的作用是用一个数组的值作为其键名,另一个数组的值作为其值的方法来创建数组。

    <?php$a = array('green', 'red', 'yellow');$b = array('avocado', 'apple', 'banana');$c = array_combine($a, $b);print_r($c);/* 显示Array(    [green] => avocado    [red]    => apple    [yellow] => banana)*/?>array_merge ()函数的作用是重排单个数组的键值或者合并两个数组。如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引,字符键值不会受影响。如果有两个以上的参数,则进行数组合并的操作,如果数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值,如果是相同的数字键名,后面的值将会附加到原来的值后面。

    <?php$a = array(4=>'green', 6=>'red', 'fruit'=>'yellow');$a = array_merge($a);print_r($a)/* 显示Array(    [0] => green    [1] => red    [fruit] => yellow)*/$a = array(4=>'green', 6=>'red', 'fruit'=>'yellow');$b = array(4=>'greens', 6=>'reds', 'fruit'=>'yellows');$a = array_merge($a,$b);print_r($a)/* 显示Array(    [0] => green    [1] => red    [fruit] => yellows    [2] => greens    [3] => reds)*/?>array_merge_recursive()函数的处理方式和array_merge()函数类似,但是array_merge_recursive()函数可以用来处理多维数组的合并。

    <?php$ar1 = array("color" => array("favorite" => "red"), 5);$ar2 = array(10, "color" => array("favorite" => "green", "blue"));$result = array_merge_recursive($ar1, $ar2);print_r($result);/* 显示Array(    [color] => Array        (            [favorite] => Array                (                    [0] => red                    [1] => green                )            [0] => blue        )    [0] => 5    [1] => 10)*/?>count()函数的作用是计算数组的个数。count()函数的第二个参数如果被设置为常量COUNT_RECURSIVE,将会递归地去计算数组的个数。sizeof()函数的作用和count()函数的作用完全相同

    <?php$food = array (    'fruits' => array ('orange','banana','apple'),    'veggie' => array ('carrot','collard','pea'));echo count($food, COUNT_RECURSIVE); // 显示 8echo count($food); // 显示 2?>array_count_values()函数的作用统计数组中的值出现的次数。

    <?php$array = array(1, "hello", 1, "world", "hello");print_r(array_count_values ($array));/* 显示Array(    [1] => 2    [hello] => 2    [world] => 1)*/?>array_values()函数的作用是返回所有元素的值。

    <?php$array = array("size" => "XL", "color" => "gold");print_r(array_values($array));/* 显示Array(    [0] => XL    [1] => gold)*/?>array_keys()函数的作用是返回数组的键名,如果设置了第二个参数,则可以返回指定值的单元的键值,第三个参数设置为true是,可以让第二个参数进行“===”的比较。

    <?php$array = array("blue", "red", "green", "blue", "blue");print_r(array_keys($array, "blue"));/* 显示Array(    [0] => 0    [1] => 3    [2] => 4)*/?>array_key_exists()函数的作用是检查给定的键名是否存在于数组中。

    <?php$ array = array('first' => 1, 'second' => 4);echo array_key_exists('first', $ array); // 显示 1?>下面这个例子说明array_key_exists()函数和isset()函数在检测时候的微小区别,就是在对null的处理上。

    <?php$search_array = array('first' => null, 'second' => 4);isset($search_array['first']); // 返回falsearray_key_exists('first', $search_array); // 返回true?>in_array()函数的作用是检查数组中是否存在某个值,比较同时检查键值和值。比较是区分大小写的。第三个参数设置为true时,匹配将会通过“===”来进行。

    <?php$a = array('o', array('c' => 'p', 'h'), array('p', 'r'));echo in_array(array('c' => 'p', 'h'), $a); // 返回truein_array(array('f', 'i'), $a); // 返回falsein_array('o', $a); // 返回true?>array_sum()函数的作用是得出数组所有单元值的和,字符串单元会被自动转换成0。

    <?php$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4, "d" => "string");echo array_sum($b); //显示 6.9?>array_product()函数的作用是得出数组所有单元值的乘积,字符串单元会被自动转换成0。

    <?php$a = array(2, 4, 6, 8);echo array_product($a); //显示 384?>array_shift()函数的作用是将数组的第一个单元移出并作为结果返回,将数组的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。

    <?php$stack = array(7 => "orange", 8 => "banana", 9 => "apple");$fruit = array_shift($stack);print_r($stack);/* 显示Array(    [0] => banana    [1] => apple)*/echo $fruit; // 显示 orange?>array_unshift()函数的作用是将传入的单元插入到数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。

    <?php$queue = array("orange", "banana");array_unshift($queue, "apple", "raspberry");print_r($queue);/* 显示Array(    [0] => apple    [1] => raspberry    [2] => orange    [3] => banana)*/?>array_pop()函数的作用是将数组的最后一个单元弹出,并返回被弹出数组元素的值。

    <?php$queue = array(7 => "orange", 8 => "banana", 9 => "apple");$fruit = array_pop($queue);print_r($queue);/* 显示Array(    [7] => orange    [8] => banana)*/echo $fruit; // 显示 apple?>array_push()函数的作用是将一个或多个单元添加到数组的末尾,并返回数组新的单元总数

    <?php$stack = array("orange", "banana");$fruit = array_push($stack, "apple", "raspberry");print_r($stack);/* 显示Array(    [0] => orange    [1] => banana    [2] => apple    [3] => raspberry)*/echo $fruit; // 显示 4?>array_slice ()函数的作用是截取出数组中的一段,第二个参数表示从第几个元素开始截取,参数小于0时从后向前计算,第三个参数为正数时,表示截取的长度,为负时,表示截取到末尾的第几个位置,第四个参数设置为true时,函数将保留键值,默认将会重置所有的数字键值。

    <?php$queue = array(7 => "orange", 8 => "banana", 9 => "apple", 10 => "pear");$fruit = array_slice($queue,1,-1,true);print_r($fruit);/* 显示Array(    [8] => banana    [9] => apple)*/?>array_splice()函数的作用是将一个数组中的部分截取并替换。第二个参数表示截取的位置,小于0是表示从后往前计数,第三个参数为正时,表示截取的长度,为负时表示从后往前截取到的位置,第四个参数表示从第二个参数表示的位置开始插入内容的数组。

    <?php$input = array("red", "green", "blue", "yellow");array_splice($input, 1, -1);print_r($input); // 显示 array("red", "yellow")$input = array("red", "green", "blue", "yellow");array_splice($input, 1, count($input), "orange");print_r($input); // 显示 array("red", "orange")$input = array("red", "green", "blue", "yellow");array_splice($input, 3, 0, "purple");print_r($input); // 显示 array("red", "green", "blue", "purple", "yellow")?>shuffle()函数的作用是将数组打乱,并重建键名。

    <?php$input = array("Neok" => "Neo","Morpheusk" => "Morpheus", "Trinityk" => "Trinity");$rand_keys = shuffle($input);print_r($input); /*显示类似Array(    [0] => Trinity    [1] => Neo    [2] => Morpheus)*/?>array_rand()函数的作用是从数组中随机取出一个或多个单元的键名。第二个参数表示取出键的数量,省略则默认为1。

    <?php$input = array("Neok" => "Neo","Morpheusk" => "Morpheus", "Trinityk" => "Trinity");$rand_keys = array_rand($input,2);print_r($rand_keys); // 显示类似Array ( [0] => Neok [1] => Morpheusk )?>array_reverse()函数返回一个和原来数组相反的数组,第二个参数如果设置为TRUE则保留原来的键名。

    <?php$input = array("Neok" => "Neo","Morpheusk" => "Morpheus", "Trinityk" => "Trinity");$result = array_reverse($input);print_r($result). "/n";/* 显示Array(    [Trinityk] => Trinity    [Morpheusk] => Morpheus    [Neok] => Neo)*/?>array_flip()函数的作用是交换数组中的键和值,函数要求值能够成为合法的键名,如果同一个值出现了多次,则最后一个键名将作为它的值,其它的将全部丢弃。

    <?php$trans = array("a" => 1, "b" => 1, "c" => 2);$trans = array_flip($trans);print_r($trans); // 显示 Array ( [1] => b [2] => c ) ?>array_search()函数的作用是在数组中搜索给定的值,如果成功则返回相应的键名。第三个参数设置为true的时候将使用“===”进行比较,如果同一个值出现多次,则返回第一个匹配的键值。

    <?php$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');echo $key = array_search('green', $array); // 显示 2;echo $key = array_search('red', $array);   // 显示 1;?>range()函数的作用是建立一个包含指定范围单元的数组,取字符值时候自动截取一位。第三个参数表示数组之间的间距,省略时默认为1。

    <?phpprint_r(range('1', '5', '2'));/* 显示Array(    [0] => 1    [1] => 3    [2] => 5)*/print_r(range('c', 'a'));/* 显示Array(    [0] => c    [1] => b    [2] => a)*/?>array_fill()函数的作用是用给定的值填充数组,第一个参数表示开始的键值,第二个参数表示数组的长度,第三个参数表示数组的值。

    <?php$a = array_fill(-1, 2, array ('first', 'key' => 'second'));print_r($a);/* 显示Array(    [-1] => Array        (            [0] => first            [key] => second        )    [0] => Array        (            [0] => first            [key] => second        )) */?>array_pad()函数的作用是用值将数组填补到指定长度,如果第二个参数为正,则数组被填补到右侧,如果为负则从左侧开始填补。原数组里面的数字键值完全重置,字符串键值将保留。

    <?php$input = array(12, 10, 9);$result = array_pad($input, -7, -1);print_r($result);/* 显示Array(    [0] => -1    [1] => -1    [2] => -1    [3] => -1    [4] => 12    [5] => 10    [6] => 9)*/?>array_unique()函数的作用是移除数组中重复的值,保留首个出现的值。

    <?php$input = array("a" => "green", "red", "b" => "green", "blue", "red");$result = array_unique($input);print_r($result);/* 显示Array(    [a] => green    [0] => red    [1] => blue)*/?>

    最新回复(0)