PHP数组
一、数组的定义
数组array定义为一组具有相同特性的元素,每个元素都有一个特殊的标识符区分,称为键 (key)
每个实体包含2个项: 键( key) 和 值 (value) , 可以通过键来获取值
键又可以是数值或关联键
注意:
数值键与值没有真正联系,他们只是值在数组中的位置
关联键与值有一定的关系
二、创建数组
1、array() 声明数组 (非正式方法)
<?php //非正式方法创建索引数组 $state[0] = "PHP"; $state[1] = "MySQL"; $state[2] = "JavaScript"; d($state); /* Array ( [0] => PHP [1] => MySQL [2] => JavaScript ) */
注意 如果创建的是数值数组 索引是递增的 索引值可以省略不写
<?php //创建一个数值索引 $states = array( 0 => 'Alabama', 1 => 'Alaska' ); //通过数值索引 可以获取值 echo $states[0]; //Alabama
<?php // 创建一个关联数组 $newarray = array( "first"=>1, "second"=>2, "third"=>3 ); // 访问关联数组 echo $newarray["second"]; // 2
<?php // 创建一个多维数组 $states3 = array( 'sc' =>array( '成都'=>'温江', '绵阳'=>'梓潼', '广元'=>'苍溪' ), 'sx' =>array('西安') ); //获取多维数组元素 echo $states3['sc']['广元']; //多维数组:苍溪
<?php //非正式方法创建关联数组 $state2['js'] = "JavaScript"; $state2['php'] = "PHP"; $state2['mysql'] ="MYSQL"; d($state2); /* Array ( [js] => JavaScript [php] => PHP [mysql] => MYSQL ) */
2、使用array()创建数组
array() 函数接收0个或多个元素作为输入, 返回一个包含这些输入元素的数组
<?php // 创建索引数组 : $language = array("php","mysql","js"); //创建关联数组 : $language = array("php"=>"90","mysql"=>"100");
三、遍历数组
1、foreach 遍历数组
<?php $url = array( '编程词典网'=>'www.mrbccd.com', '编程体验网'=>'www.bcty365.com', '编程资源网'=>'www.bc110.com' ); foreach($url as $link){ echo $link ."<br>"; } /* www.mrbccd.com www.bcty365.com www.bc110.com */
2、使用list() 提取数组
list() 函数可以从一个数组内取出多个值,同时为多个变量赋值
该函数只用于数字索引的数组,且假定数字索引从 0 开始
<?php $number = array("Dog","Cat","Blue"); list($a, ,$c) = $number; echo "$a, ,$c"; //Dog Blue
四、字符串与数组转换
explode()函数和implode()函数
1、使用explode()函数将字符串转换成数组
array explode(string separator,string string,[int limit])
<?php $str = "时装,休闲,职业装"; $strs = explode(",",$str); //Array ( [0] => 时装 [1] => 休闲 [2] => 职业装 ) print_r($strs); //时装 echo $strs[0]; // 如果设置了limit,那么最后那个元素将包含string的剩余部分 $strss = explode(",",$str,2); //Array ( [0] => 时装 [1] => 休闲,职业装 ) print_r($strss); // 如果separator为空字符串 explode返回false $strsss = explode(" ",$str); //Array ( [0] => 时装,休闲,职业装 ) print_r($strsss); // 如果separator找不到返回包含string单个元素的数组 $strssss = explode("、",$str); //Array ( [0] => 时装,休闲,职业装 ) print_r($strssss); // 如果separator 为负数 返回除了最后的limit个元素外的所有元素 $strsssss = explode(",",$str,-1); // Array ( [0] => 时装 [1] => 休闲 ) print_r($strsssss);
字符串与数组之间的转换
// 定义一个数组 $array = array("bike","car","plane","train"); //Array ( [0] => bike [1] => car [2] => plane [3] => train ) print_r($array); echo "<br/>"; echo "经过implode处理后的$array"; $array = implode('---',$array); //bike---car---plane---train print_r($array); echo "<br/>"; echo "经过explode处理后 的$array"; $array = explode('---',$array); //Array ( [0] => bike [1] => car [2] => plane [3] => train ) print_r($array);
2、使用implode() 函数将数组转换成一个新字符串
implode()函数用于将数组的内容组合成一个字符串
string implode(string glue,array pieces)
glue 字符串乐西 传入的分隔符
pieces数组类型 要合并元素数组变量名称
<?php $mystr = array("hello","world","php","javascript"); // 组合成一个新的字符串 // hello,world,php,javascript echo implode(",",$mystr);
五、统计数组元素个数
count()函数对数组中的元素个数进行统计
int count(mixed array [,int mode])
array 必填参数 数组
mode 可选 COUNT_RECURSIVE 或 1
如选中此参数,本函数将递归对数组计数,对计数多维数组的所有单元有用,默认值为0
<?php $arr2 = array("php函数大全","php编程宝典","js入门到精通"); // 3 echo count($arr2); $arr3 = array( "php"=>array("php函数大全","php编程宝典"), "js"=>array("js入门到精通") ); // 5 echo count($arr3,COUNT_RECURSIVE);
六、查询数组中指定的元素
array_search() 在数组中搜索给定的值,找到返回键名 否则返回false
array_search(mixed needle,array haystack [, bool strict])
needle指定在数组中搜索的值
haystack指定被搜索的数组
strict为可选参数,如果值为true,还将在数组中检查给定值的类型
$arr4 = array("a"=>"red","b"=>"green","c"=>"blue"); //array_search() 函数在数组中搜索某个键值,并返回对应的键名 // 返回键名 a echo array_search("red",$arr4);
七、获取数组中最后一个元素
array_pop()函数获取并返回数组的最后一个元素,并将数组的长度减1
如果数组为空(或者不是数组)将返回null
array_pop(array array)
$arr5 = array("hello","world","php","javascript"); $array1 = array_pop($arr5); //javascript echo $array1;
八、向数组中添加元素
array_push()函数将数组当成一个栈,将传入的变量压入该数组的末尾,
该数组的长度将增加入栈变量的数目,返回数组新的元素总数。
array_push(array array,mixed var [,mixed ...])
array为指定的数组,var是压入数组中的值
$arr6 = array("hello","world","php","javascript"); array_push($arr6,"css3","mysql"); //Array ( [0] => hello [1] => world [2] => php [3] => javascript [4] => css3 [5] => mysql ) print_r($arr6);
九、删除数组中重复元素
array_unique()函数用于将值作为字符串排序,然后对每个值只保留第一个键名,
忽略所有后面的键名,即删除数组中重复的元素。
array array_unique(array array)
array为输入的数组
$arr7 = array("hello","world","php","javascript","php"); $arr7_1 = array_unique($arr7); //Array ( [0] => hello [1] => world [2] => php [3] => javascript ) print_r($arr7_1);
十、数组排序
sort()
rsort()
asort()
arsort()
ksort()
krsort()
shuffle() 随机排序函数
十一、多维数组排序
十二、数组判断函数
in_array()
array_key_exists()
十三、数组合并拆分
array_merge()数组合并
array_combine() 数组合并
array_chunk() 数组拆分
十四、返回数组交集函数 array_intersect()
十五、快速初始化数组
range()
array_fill()
十六、在数组中查找值
array_search()
十七、定位数组元素
in_array()
十八、获取数组键
array_keys()
十九、获取数组值
array_values() 所有的值并为其建立数字索引,不保留键名
$a=array("Name"=>"Bill","Age"=>"60","Country"=>"USA"); //Array ( [0] => Bill [1] => 60 [2] => USA ) print_r(array_values($a));
多文件上传综合实例:
<form action="arr1.php" method="post" enctype="multipart/form-data" name="form1"> <tr> <td width="88" height="30" align="right" class="STYLE1">内容1:</td> <td width="369"><input name="picture[]" type="file" id="picture[]" size="30"></td> </tr> <br> <tr> <td width="88" height="30" align="right" class="STYLE1">内容2:</td> <td width="369"><input name="picture[]" type="file" id="picture[]" size="30"></td> </tr> <tr> <br> <td height="30" align="right" class="STYLE1">内容3:</td> <td><input name="picture[]" type="file" id="picture[]" size="30"></td> </tr> <br> <tr> <td><input type="submit" name="imageField" value="提交"></td> </tr> </form>
<?php //判断服务器中是否存在指定文件夹 if(!is_dir("./upfile")){ //如果不存在,则创建文件夹 mkdir("./upfile"); } //删除数组中重复的值 $array=array_unique($_FILES["picture"]["name"]); //根据元素个数执行foreach循环 foreach($array as $k=>$v){ //定义上传文件存储位置 $path="upfile/".$v; //判断上传文件是否为空 if($v){ //执行文件上传操作 if(move_uploaded_file($_FILES["picture"]["tmp_name"][$k],$path)){ $result=true; }else{ $result=false; } } } if($result==true){ echo "文件上传成功,请稍等..."; echo "<meta http-equiv=\"refresh\" content=\"3; url=arr1.php\">"; }else{ echo "文件上传失败,请稍等..."; echo "<meta http-equiv=\"refresh\" content=\"3; url=arr1.php\">"; } ?>
array_unshift和array_shift数组头添加/删除数组元素
https://www.gyzth.top/article/15.html
array_push和array_pop数组尾添加/删除数组元素
https://www.gyzth.top/article/16.html