计算机网络/计算机科学与应用/系统/运维/开发

PHP数组

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


php

微信小程序 https://www.javascriptcn.com/interview-weixinapp/677f48463d78df11d950b260.html

评论

^