php之数组详解

作者:邹阳 | 发表于:2016-04-17 17:22:02

阅读量:(273) | 所属栏目:编程

数组
序号索引跟js一样,也是从0开始,使用echo会打印出Array,使用print_r(数组)  会以键值对的形式(=>)打印出数组。
一、创建方式第一种:
$userNames=array( '李彦宏','周鸿祎','马云','俞敏洪','李开复' );   //注意与js不同的是它没有[] 
echo $userNames[0];  //打印出了李彦宏
二、创建方式第二种: 
第二种: 通过 range()函数创建一个数组 , 参数可以是数组或者字母
$numbers=range(1,10) ;     $letters=range('a','z')       
可以加第三个参数$numbers=range(1,10,2),第三个参数表示步长
改变数组的值:$userNames[0]="Lee";  
三、计算数组里面下标单元个数或者对象属性的个数:count   (它的别名是sizeof,sizeof方法跟它一样)
echo count($userNames)     //与          js不一样的是,js通过 数组.length  来获取
四、自定义键的数组(就是自定义数组默认的那个0、1、2那个序号索引):
$ages=array( 'baidu'=>'李彦宏', 100 =>'周鸿祎', 200=>'马云','俞敏洪','李开复' ); 
//$ages['baidu']是李彦宏,$ages[100]是周鸿祎,$ages[0] 现在是俞敏洪
追加数组:首先,创建只有一个元素的数组,然后追加两个元素。
$ages=array("吴祁"=>19);   //创建一个数组年龄
$ages["邹阳"]=27;
$ages["周洋"]=23;
直接添加数组:无需创建,直接添加,添加第一个元素自动建立数组。
$ages["邹阳"]=19;
$ages["周洋"]=27;
$ages["邹杨"]=23;
五、each(数组)     返回数组中当前的键/值对并将数组指针向前移动一步。默认指针从第一个键值对开始,获取该键值对,将该键值对包装成一个新数组并返回出来。返回的新数组有4个单元: [0] => 原数组对应键值对的索引, [1] =>  原数组对应键值对的值,[key] => 原数组对应键值对的索引, [value] => 原数组对应键值对的值            然后指针跳到下一个键值对。
?php
$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);
print_r($bar);
$bar = each($foo);$bar = each($foo);$bar = each($foo); // 每each一次,指针就会移向下一个键值对,你再打印$bar,值会不一样了
?>
显示:
Array
(   [0] => 0   //原来键值对bob在索引0
    [1] => bob    //原数组对应键值对的值为bob
    [key] => 0 
    [value] => bob
)
echo !!each($foo); // each($foo) 如果是有数据的,然后取布尔值,则返回true。可以作为条件判断的条件
六、list()  把数组中的值赋给一些变量
$a = array( 'aa' , 'bb', 'cc' , 'dd');
list( $var1 , $var2 ) = $a;  //意思就是 $var1 = 'aa' ; $var2 = 'bb';
echo $var1;
PS1:list只能认识数组下标索引key为数字的数组。这种自定义形式就不能用list:$ages=array( 'baidu'=>'李彦宏', 'bb'=>'周鸿祎' ); 我们可以结合each和list来对自定义数组进行获取:
$ages=array( '李彦宏'=>35,  '周鸿祎'=>40 ,'马云'=>20 ); 
$a = each($ages);
list( $name , $age) = $a ;  //这样就把第一个键值对 '李彦宏'=>35 获取出来了,再赋值给了 $name和$age
echo $name;  //返回李彦宏
echo $age;  //返回35
PS2:
关于 reset() :当使用 each()函数时, 数组将记录当前元素。 如果希望在相同的脚本中两次使用该数组, 就必须使用函数 reset()将当前元素指针重新设置到数组开始处。 
reset($ages);
七、array_unique(数组):它会创建一个新的相同的数组,并删除掉里面具有相同值value的元素,也就是移除重复的值(不是重复索引) ,原数组不会被改变。
array_flip(数组):它会创建一个新的相同的数组,交换一下数组键和值,对调。它会对调数组中的 key和value对调; 原数组不会被改变。
七、sort(数组)函数 将数组按字母升序进行排序。数组顺序被改变。 跟js一样,对数字进行排序还是的传递一个比较参数:sort(数组 ,SORT_NUMERIC )
排序类型标记:
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 位运算),不区分大小写排序字符串。
反向排序: sort()、 asort()和ksort()都是正向排序,当然也有相对应的反向排序.
实现反向: rsort()、 arsort()和 krsort()。
sort(),根据数组中元素的值,以英文字母顺序排序,索引键会由0到n-1重新编号。主要是当数组索引键的值无关紧要时用来把数组排序。
asort(),对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
ksort(),根据数组中索引值key大小,以英文字母顺序排序,特别适合用于希望把索引键排序的关联数组。
八、shuffle( 数组 ) 将数组各元素进行随机排序。  这个方法可以用来随机的执行某些变幻。例如在数组里加入不同的图片,然后随机排序,我们再显示这个数组的某个索引值,这样每次刷新,就是不同的图片显示出来。
九、array_reverse()   反向排序。会创建一个新数组,原来数组不变。   (array_打头的会创建新数组)
array_unshift( 原数组, 新元素 )  将新元素添加到数组头, 原数组被改变。
array_push() 将每个新元素添加到数组 的末尾。原数组被改变。
array_shift(数组)删除数组头第一个元素.原数组被改变。
array_pop(数组),删除并返回数组末 尾的一个元素。 原数组被改变。
array_rand(数组 , 取几个) 返回数组中的一个或多个键(索引),不是值哈。如果取2个及以上,要获得取到的索引,得单独输出:$a=array_rand(array(1,2,3,4), 2) ; echo $a[0] ; echo $a[1] ;  不能直接echo $a;
十、数组的指针操作:
each()、 current()、 reset()、 end()、 next()、 pos()、 prev();
current(数组) :返回该数组当前指针位置的值value,然后指针并不移向下一位。
next(数组) :返回该数组当前指针位置的下一位指针位置的值value
prev() 与next相反
十一、array_count_values(数组)  统计数组内所有值出现的次数,返回一个新数组,键为原数组的值,值为出现次数。
$array=array(1,2,3,4,5,1,3);  print_r(array_count_values($array)); //返回一个新数组为:1=>2,2=>1,3=>2,4=>1,5=>1
十二、将数组转换成标量变量: extract( 数组 )
将数组的字符串键(key)设置成变量,然后将数组的值赋给了这个变量,然后可以通过打印变量那样打印出各个键的值value
十三、in_array( 你要查找的内容 , 数组 )  检查数组中是否存在某个值 返回布尔值。
回复内容:(还能输入1000字)
验 证 码: