1. 云栖社区>
  2. PHP教程>
  3. 正文

php语法-----03 php 数组相关

作者:用户 来源:互联网 时间:2017-11-30 18:49:10

php数组语法相关

php语法-----03 php 数组相关 - 摘要: 本文讲的是php语法-----03 php 数组相关, 数组在php中是以键-值对的方式存储--Map(key , value) 。数组的索引就是key,或者定义一个属性作为key都可以。 1、array( ): 创建数组 php中,有三种数组类型:索引数组,关联数组,多维数组。 索引数组,带

数组在php中是以键-值对的方式存储--Map(key , value) 。数组的索引就是key,或者定义一个属性作为key都可以。


1、array( ): 创建数组


php中,有三种数组类型:索引数组,关联数组,多维数组。


索引数组,带数字索引的数组,$arr1=array( "A" , "B" , "C" ),默认索引 0,1,2...;


关联数组,带指定键的数组,$arr2=array( "id"=>1 , "name"=>"Tom", "info"=>"Tom is ...." );


多维数组,数组的元素又是数组。


<?php
header("content-type: text/html;charset=utf-8");/*索引数组*/
echo "索引数组
方式一:索引自动分配
";
$arr1=array("A","B","C");
print_r($arr1);
echo "
"."方式二:手动分配索引:
";
$arr2=array();
$arr2[0]="A";
$arr2[1]="B";
$arr2[2]="C";
print_r($arr2);
/*关联数组*/
echo "
"."关联数组
";
$arr3=array("id"=>1,"name"=>"Tom","info"=>"Tom is ...");
print_r($arr3);
/*多维数组*/
echo "
"."多维数组
";
$arr4=array(array(1,2,3),array("a","b","c","d"),array("Tom"));
echo "
";//
...
预格式化文本
print_r($arr4);
echo "";
?>

上述代码的运行结果如下图所示:


php语法-----03 php 数组相关-";
$arr1=array("A","B","C","D","E");
foreach ($arr1 as $key => $value) {
echo $key.":".$value."";
}
echo "
";
//foreach 循环关联数组
echo "foreach 循环关联数组:
";
$arr2=array("id"=>1,"name"=>"Tom","info"=>"Tom is ...");
foreach ($arr2 as $key => $value) {
echo $key.":".$value."";
}
?>

本段代码执行结果如下图所示:


php语法-----03 php 数组相关-";
unset($arr1[0]);//删除数组$arr1中索引为0的元素。
print_r($arr1);//再次打印该元素
?>

上段代码的运行结果是:


Array ( [0] => A [1] => B [2] => C [3] => D [4] => E ) Array ( [1] => B [2] => C [3] => D [4] => E )


注意:经过我试验,不能直接使用 unset("A")来删除该元素,会报错。


b. 数组的复制:直接使用“=”。需要注意的是,该数组复制成功后,改变$arr1数组中的值时,$arr2数组值不会随之改变(即,值传递,并非地址传递)。


<?php
header("content-type: text/html;charset=utf-8");
$arr1=array("A","B","C","D","E");
$arr2=$arr1;//传递副本(不是数组的地址)
print_r($arr2);
?>

c. 数组中添加元素:两种方式,指定索引和不指定索引,具体见下段代码:


<?php
header("content-type: text/html;charset=utf-8");
$arr= array();//创建数组
//添加数组元素方式一:指定索引
$arr[0]=1;//添加索引为0的元素 1
$arr["id"]="001";//添加索引下标为id的数组元素 001
$arr["name"]="Tom";
print_r($arr);//打印该数组
echo "
";
//添加数组元素方式二:不指定索引
$arr[]="NanKing";//不指定索引而直接添加新元素,该元素添加到本数组的末尾,索引默认+1
print_r($arr);//打印该数组
?>

上段代码的执行结果是:


Array ( [0] => 1 [id] => 001 [name] => Tom ) Array ( [0] => 1 [id] => 001 [name] => Tom [1] => NanKing )


d. 排序:sort( ),升序排序,sort( )函数直接修改原数组的顺序。rsort( )降序排序。具体用法见下代码段。当数组元素是数字是,按数字大小比较;当数组元素是字符串是,按首字母ASCII大小比较。


<?php
header("content-type: text/html;charset=utf-8");

$arr1=array(22,35,14,69,8,100,66);
echo "
"."原数组:";
print_r($arr1);
echo "
sort()排序后";
sort($arr1);//sort()排序
print_r($arr1);//打印排序后的数组
$arr1=array(22,35,14,69,8,100,66);
echo "
"."原数组:";
print_r($arr1);
echo "
rsort()排序后";
rsort($arr1);//rsort()排序
print_r($arr1);//打印原数组
//字符串是按照首字母顺序排序
$arr2=array("Tom","Alice","ceil","Ben","Jack");
echo "
"."原数组:";
print_r($arr2);
echo "
sort()排序后";
sort($arr2);//sort()排序
print_r($arr2);//打印排序后的数组
?>

本段代码的执行结果如下所示: 原数组:Array ( [0] => 22 [1] => 35 [2] => 14 [3] => 69 [4] => 8 [5] => 100 [6] => 66 ) sort()排序后Array ( [0] => 8 [1] => 14 [2] => 22 [3] => 35 [4] => 66 [5] => 69 [6] => 100 ) 原数组:Array ( [0] => 22 [1] => 35 [2] => 14 [3] => 69 [4] => 8 [5] => 100 [6] => 66 ) rsort()排序后Array ( [0] => 100 [1] => 69 [2] => 66 [3] => 35 [4] => 22 [5] => 14 [6] => 8 ) 原数组:Array ( [0] => Tom [1] => Alice [2] => ceil [3] => Ben [4] => Jack ) sort()排序后Array ( [0] => Alice [1] => Ben [2] => Jack [3] => Tom [4] => ceil )


e. 数组的定位:reset( ) 第一个,next( ) 下一个(如果已经在末尾,那么下一个返回时false),prev( ) 前一个,end( ) 末尾,current()当前。


<?php
header("content-type: text/html;charset=utf-8");

$ary=array("Tom", "Sam", "Ben", "Sophia");
// reset 第一个
// next 下一个,如果已经在末尾,那么下一个返回是false
// prev 前一个
// end 末尾
// current 当前

//顺序遍历数组
do {
echo current($ary),"
";
} while (next($ary));
echo "
";

//定位到末尾
end($ary);
//倒序遍历数组
do {
echo current($ary),"
";
} while(prev($ary));
?>

4、数组中常用函数


a. in_array("元素名","数组名"):判断数组中是否包含该元素。


<?php
$ary=array("Java", "PHP", "Web", "C++");//声明数组
echo var_dump(in_array("C++", $ary));//$ary数组中包含C++
echo "
";
echo var_dump(in_array("JSP",$ary));//$ary数组中不包含JSP
?>

b. array_reverse($ary): 倒序(原数组元素顺序的倒序,并非排序)。下段代码的打印结果是:Array ( [0] => C++ [1] => Web [2] => PHP [3] => Java )


<?php
$ary=array("Java", "PHP", "Web", "C++");//声明数组
print_r(array_reverse($ary));//倒序并打印
?>

c. array_merge($ary1,$ary2): 数组的合并。


<?php
$ary=array("Java", "PHP", "Web", "C++");//声明数组
$ary2=array_merge($ary, array("C", "C++", "C#"));//将$ary数组与新数组["c","c++","c#"]合并,合并结果赋给$ary2。
print_r($ary2);//打印$ary2结果是: Array ( [0] => Java [1] => PHP [2] => Web [3] => C++ [4] => C [5] => C++ [6] => C# )
?>

d. array_unique($ary2): 数组去重(若数组元素有重复,删除后面的元素)


<?php
$ary=array("Java", "PHP", "Web", "C++");//声明数组
$ary2=array_merge($ary, array("C", "C++", "C#"));//将$ary数组与新数组["c","c++","c#"]合并,合并结果赋给$ary2。
print_r($ary2);//打印$ary2结果是:
// Array ( [0] => Java [1] => PHP [2] => Web [3] => C++ [4] => C [5] => C++ [6] => C# )
echo "
";
$ary3=array_unique($ary2);//去除$ary2中重复的元素
print_r($ary3);
?>

上述代码打印$ary2的结果是:Array ( [0] => Java [1] => PHP [2] => Web [3] => C++ [4] => C [5] => C++ [6] => C# )


去重后,打印$ary3的结果是:Array ( [0] => Java [1] => PHP [2] => Web [3] => C++ [4] => C [6] => C# )


e. array_push($ary , 新元素): 在数组的末尾添加元素


<?php
$ary=array("Java", "PHP", "Web", "C++");//声明数组
array_push($ary, "C#");//在数组$ary末位添加元素“C#”
print_r($ary);//打印插入新元素后的$ary;
?>

c. shuffle($ary): 数组洗牌效果(把数组中的元素按随机顺序重新排列)


<?php
header("content-type: text/html;charset=utf-8");
$ary=array("Java", "PHP", "Web", "C++");//声明数组
echo "/$ary原数组:";
print_r($ary);
echo "
";
echo "第一次洗牌后:";
shuffle($ary);
print_r($ary);//打印第一次洗牌后的$ary
echo "
";
echo "第二次洗牌后:";
shuffle($ary);
print_r($ary);//打印第二次洗牌后的$ary
?>

上段代码运行结果是:


php语法-----03 php 数组相关-";
$str2=implode(",",$arr);//将数组用“,”连接转成字符串。
echo $str2;
?>

6、preg_match_all( )


preg_match_all( ):它的第一个参数是正则表达式,表示匹配条件;第二个参数是字符串;第三个参数是存放匹配结果的数组。具体使用方法见下段实例:


<?php
$msgs="Students' no is: 18877, 19900, 16789, 13456,12346!";
//找出字符串$msgs中五位数字
preg_match_all("//d{5}/", $msgs, $numbers);
print_r($numbers);
?>

本段代码的打印结果是:Array ( [0] => Array ( [0] => 18877 [1] => 19900 [2] => 16789 [3] => 13456 [4] => 12346 ) )。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 数组 , 语法 , 相关 ,以便于您获取更多的相关知识。