关闭

数组函数--php基础最详细教程

标签: 数组函数php函数php最全语法
297人阅读 评论(0) 收藏 举报
分类:


常用数组函数 原创



<?php


header('content-type:text/html;charset=utf-8');
date_default_timezone_set('PRC');


//数组函数实例
//数字创建函数
//1.声明数组函数array()
$arr = array('name'=>'vilin','age'=>27,'sex'=>'男','email'=>'vilin@qq.com');


print_r($arr);
echo '<br>';


//2.生成一个数组,用一个数组的值作为键,用另外一个数组的值作为值。array_combine()
//array array_combine ( array $keys , array $values )
$arr1 = array('os','dns','data','language');
$arr2 = array('Linux','Apache','Mysql','PHP');
$arr3 = array_combine($arr1,$arr2);
print_r($arr3);
echo '<br>';


//3.range 创建一个指定范围的数组  $start 开始值   $limit 结束值 
// $step  步进值,可选
//array range ( mixed $start , mixed $limit [, number $step = 1 ] )
//输出Array ( [0] => 0 [1] => 10 [2] => 20 [3] => 30 [4] => 40 [5] => 50 )
$arr = range(0,50,10); //开始值为0 结束值为100 每次值 步进10 
//输出Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h [8] => i )
$arr1 = range('a','i');
print_r($arr);
echo '<br>';
print_r($arr1);
echo '<br>';


//4.创建一个由变量组成的数组,变量名作为键,变量值为值。
//array compact ( mixed $varname [, mixed $... ] )
//compact() 接受可变的参数数目。每个参数可以是一个包括变量名的字符串或者是
//一个包含变量名的数组,该数组中还可以包含其它单元内容为变量名的数组, compact() 可以递归处理.
$os = 'widows';
$server = 'IIS';
$data = 'sql2000';
$lauguage = 'asp';
//输出Array ( [os] => widows [server] => IIS [data] => sql2000 )
$arr = compact('os','server','data','language'); //不要使用$符号。 
print_r($arr);
echo '<br>';


//5.用给定的值填充数组 $start_index开始的键名,num 填充的个数。 value 填充的值。
//array array_fill ( int $start_index , int $num , mixed $value )
$arr = array_fill(2,5,'中国加油!');
print_r($arr);
echo '<br>';
//数组创建函数结束




//数组合并拆分
//1.把一个数组拆分成多个数组 input 要拆分数组, size拆分后的每个数组的单元个数。
//最后一个可能少于size个。preserve_keys 为true保留原有键名。
//array array_chunk ( array $input , int $size [, bool $preserve_keys = false ] )
$arr = array('a','b','c','d','e');
$arr1 = array_chunk($arr,2,true);
echo '<pre>';
print_r($arr1);
echo '</pre>';
echo '<br>';


//2.把一个或多个数组合并成一个数组
//array array_merge ( array $array1 [, array $... ] )
//Array ( [one] => green [0] => red [1] => blue [2] => yellow [ONE] => A [3] => B [4] => C [5] => D ) 
$arr1 = array('one' => 'green', 'red', 'blue', 'yellow');
$arr2 = array('ONE' => 'A','B','C','D');
$arr = array_merge($arr1,$arr2);
print_r($arr);
echo '<br>';


//3.从数组中取出一段值  offset 开始位置,可以为负值。 length 取出长度 可以为负值  perserve_keys 为true 保留索引键名
//array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
$arr = array('a','b','c','d','e','f','h','i');


$arr1 = array_slice($arr,1,4);
$arr2 = array_slice($arr,-5,3);//d e f 
$arr3 = array_slice($arr,-6,-3,true); //c d e
print_r($arr1);
echo '<br>';
print_r($arr2);
echo '<br>';
print_r($arr3);
echo '<br>';




//数组值比较
//4.对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值,会保留键名.
//array array_diff ( array $array1 , array $array2 [, array $... ] )
$arr = array(4,5,6,8,9,1);
$arr1 = array(2,3,6,8,0);
$arr2 = array(8,7,6,5,9);
$arr4 = array_diff($arr,$arr1,$arr2);
print_r($arr4); // 4 1
echo '<br>';


//5.该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
//array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
$arr = array(4,5,6,8,9,1);
$arr1 = array(2,3,6,8,0);
$arr2 = array(8,7,6,5,9);
$arr4 = array_intersect($arr,$arr1,$arr2);
print_r($arr4);// 6 8 
echo '<br>';




//数组查找替换
//1.在数组haystack中搜索给定的值needle,如果成功则返回相应的键名
//如果needle是字符串则区分大小写。 strict 为true 严格比较needle类型。
//mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )
//返回值,找到了返回值的键名  找不到返回假


$arr = array('1',2,3,'aBc',5);
var_dump(array_search(1,$arr));  // 0 键名
var_dump(array_search(1,$arr,true));//false 同时比较类型
var_dump(array_search('abc',$arr)); //false 区分大小写
echo '<br>';


//2.与array_search 用法一样除返回值不同。
//bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )




//3.把 input 数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用其中的单元取代。 
//array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement ]] )
//注意 input 中的数字键名不被保留。返回值 返回一个被移除单元的数组。  
$arr = ['a','b','c','d','e','f','i','g','k'];
$arr2 = [1,2,3,4];
$arr1 = array_splice($arr,4,4); 
var_dump($arr); //a b c d k
var_dump($arr1); // e f i g 
$arr3 = array_splice($arr,-4,-2,$arr2); //截取个数可以和填充个数不相等 也会被填充
var_dump($arr); // a 1 2 3 4 d k
var_dump($arr3); // b c 




//4.将数组中的所有值的和以整数或浮点数的结果返回。
//number array_sum ( array $array )
$arr = ['10abc','a','b','2',3,4.5,'5.5'];
echo array_sum($arr); //25


//5.在给定的 key 存在于数组中时返回 TRUE。key 可以是任何能作为数组索引的值。也可用于对象
//bool array_key_exists ( mixed $key , array $search )
$arr = ['os'=>'Linux','server'=>'Apache','data'=>'Mysql','language'=>'PHP'];
var_dump(array_key_exists('os',$arr));//true 表示存在


//数组指针操作
//key() current()别名pos() next() prev() end() reset()
//key() 函数返回数组中内部指针指向的当前单元的键名。 但它不会移动指针。
//key() 如果内部指针超过了元素列表尾部,或者数组是空的, key() 会返回 NULL。
//current() 函数返回当前被内部指针指向的数组单元的值,并不移动指针。
//current() 如果内部指针指向超出了单元列表的末端, current() 返回 FALSE。 
//next() 和 current() 的行为类似,只有一点区别,在返回值之前将内部指针向前移动一位。
//这意味着它返回的是下一个数组单元的值并将数组指针向前移动了一位。 没有值返回false.
//prev() 和 next() 的行为类似,只除了它将内部指针倒回一位而不是前移一位。 没有值返回false.
//end() 将 array 的内部指针移动到最后一个单元并返回其值。
//reset() 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值。
$arr = ['a','b','c','d','e','f'];


echo reset($arr); //a 
echo next($arr); //b
//list 像 array() 一样,这不是真正的函数,而是语言结构。 list() 用一步操作给一组变量进行赋值。
//array list ( mixed $varname [, mixed $... ] )
 $arr1 = list($a,$b,$c) = $arr; //list 返回值是一个数组。
echo '<br>';
 //each 在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。
 //如果要再用 each 遍历数组,必须使用 reset()。
 //返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,
 //键名为>,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。 


//array_shift 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。
 //array_shift 所有的数字键名将改为从零开始计数,关联数组键名将不变。mixed array_shift ( array &$array )
$arr = ['a','b','c','d'];
echo array_shift($arr); //执行一次删除一个。
echo array_shift($arr);  //输出删除左面删除的值
var_dump($arr); //会改变原数组


//array_unshift() 将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,
//因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。
//int array_unshift ( array &$array , mixed $var [, mixed $... ] ) 返回数组的新的单元数目 
echo array_unshift($arr, 'e','r','s');  //返回$arr数组的所有单元个数。
var_dump($arr); //在数组左面插入一个值。


//将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。和如下效果相同:
//int array_push ( array &$array , mixed $var [, mixed $... ] ) 和array_unshift 用法相同只是从右面插入值 。


//array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL。
//mixed array_pop ( array &$array ) 返回被删除的值。用法与array_shift类似。 只是这个是从右边删除。




//数组键值操作
//1. bool shuffle ( array &$array ) 将数组打乱 不会保留原始键名无论是索命还是关联数组。 
$arr = ['one' =>'a','b','c','d','e','f'];
shuffle($arr);
var_dump($arr);


//2. int count ( mixed $var [, int $mode = COUNT_NORMAL ] ) 计算数组中的单元数目或对象中的属性个数
echo count($arr);
echo '<br>';


//3.array_flip() 返回一个反转后的 array,例如 trans 中的键名变成了值,而 trans 中的值成了键名
//如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。array array_flip ( array $trans )
$arr = ['os'=>'Linux','server'=>'Apache','data'=>'Mysql','language'=>'PHP'];
$brr = array_flip($arr);
var_dump($brr);




//4.array array_keys ( array $input [, mixed $search_value = NULL [, bool $strict = false ]] )
//返回 input 数组中的数字或者字符串的键名。如果指定了可选参数 search_value,则只返回该值的键名。
//strict 为true 将严格匹配类型 ===
$arr = ['os'=>'Linux','server'=>'Apache','data'=>'Mysql','language'=>'PHP'];


$brr = array_keys($arr); //键名组成的数组
var_dump($brr);
$brr = array_keys($arr,'Linux'); // os 
print_r($brr);




//5.array array_values ( array $input ) array_values() 返回 input 数组中所有的值并给其建立数字索引
$arr = ['os'=>'Linux','server'=>'Apache','data'=>'Mysql','language'=>'PHP'];
$brr = array_values($arr);
var_dump($brr);


//6.array array_reverse ( array $array [, bool $preserve_keys = false ] )
//接受数组 array 作为输入并返回一个单元为相反顺序的新数组。 preserve_keys 为true 则 保留索引键名。
$arr = ['os'=>'Linux','server'=>'Apache','data'=>'Mysql','language'=>'PHP'];
$brr = array_reverse($arr);
var_dump($brr); //单元翻转。


//7.array array_count_values ( array $input )
//array_count_values() 返回一个数组,该数组用 input 数组中的值作为键名,该值在 input 数组中出现的次数作为值。
 $arr = ['a','c','d','a','c','c','b','a','a'];
 $brr = array_count_values($arr);
 var_dump($brr); //a=>4 c=>3 d=>1 b=>1




//8.从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键。
//array_rand ( array $input [, int $num_req = 1 ] ) 
//如果你只取出一个, array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。
 //这样你就可以随机从数组中取出键名和值。
  $arr = ['a','c','d','a','c','c','b','a','a'];
  $brr = array_rand($arr,4);//从 0 开始算起。返回一个键名的数组。 
  var_dump($brr); //键名是随机取的。不会按顺序。 


 //9.注意键名保留不变。 array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,
  //array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
  //接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。 


$arr = ['2','3',2,3,5,7];
$brr = array_unique($arr);//默认也会过滤掉值相同的单元2 3 57
var_dump($brr);
//$brr = array_unique($arr,SORT_NUMERIC);
//var_dump($brr);


//数组排序 
// sort rsort asort arsort ksort krsort natsort natcasesort usort uksort uasort
//bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )升序排列  
//bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )降序排列
$arr = [0,'A','F','C','BB','cc','a','z','f',1,9,2,15,3];
sort($arr);
print_r($arr);
//Array ( [0] => A [1] => BB [2] => C [3] => F [4] => 0 [5] => a [6] => cc 
//[7] => f [8] => z [9] => 1 [10] => 2 [11] => 3 [12] => 9 [13] => 15 ) 
echo '<br>';
rsort($arr);
print_r($arr);
echo '<br>';
//对数组进行排序并保持索引关系
//bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) 升序
//bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) 降序
$arr = [0,'A','F','C','BB','cc','a','z','f',1,9,2,15,3]; //会保留原来索引关系
asort($arr);
print_r($arr);
echo '<br>';
arsort($arr);
print_r($arr);
echo '<hr>';


//对数组按照键名排序,保留键名到数据的关联。本函数主要用于关联数组 
//bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) 升序
//bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) 降序
$arr = ['a'=>'abc','c'=>'cba','A'=>'ABC','D'=>'DCB','EF',10=>'GG'];
ksort($arr);
//Array ( [0] => EF [A] => ABC [D] => DCB [a] => abc [c] => cba [10] => GG ) 
print_r($arr);
krsort($arr);
print_r($arr);
echo '<hr>';


//bool natsort ( array &$array )  用"自然排序"算法对数组排序
//bool natcasesort ( array &$array ) 用"自然排序"算法对数组进行不区分大小写字母的排序
$arr = ['file01.php','file02.php','file12.php','files11.php','files22.php','abc.php'];
natsort($arr);
//Array ( [5] => abc.php [0] => file01.php [1] => file02.php [2] => file12.php 
//[3] => files11.php [4] => files22.php )
print_r($arr);


其他数组函数



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:44048次
    • 积分:885
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:33篇
    • 译文:0篇
    • 评论:1条
    最新评论