加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

数组初始

发布时间:2020-12-13 20:55:34 所属栏目:PHP教程 来源:网络整理
导读:空数组 $arr = array (); var_dump ( $arr ); gettype():得到变量的类型 echo gettype ( $arr ); // array(0) {} 通过is_array():检测变量是否为数组 var_dump ( is_array ( $arr )); arraybool(true) 如果数组下标重复,后面的覆盖前面的值 ( 'a',0='b' );

空数组

    $arr=array();
    var_dump($arr);

gettype():得到变量的类型

    echo gettype($arr);//array(0) {}

通过is_array():检测变量是否为数组

    var_dump(is_array($arr));arraybool(true)

如果数组下标重复,后面的覆盖前面的值

    (
      'a',0=>'b'
    );
    $arr);
    array(1) {
    //[0]=>
    //  string(1) "b"
    //}

如果新添加元素没有指定下标,它的下标为已有下标最大值加1(已有下标不全为负数)

    (
    'a','b','c',5=>'d',19=>'e','f'var_dump($arr);
    //array(6) {
    //    [0]=>
    //  string(1) "a"
    //    [1]=>
    //  string(1) "b"
    //    [2]=>
    //  string(1) "c"
    //    [5]=>
    //  string(1) "d"
    //    [19]=>
    //  string(1) "e"
    //    [20]=>
    //  string(1) "f"
    //}

如果已有下标都为负数,那么新添加元素的下标从0开始

    (
      -12=>'a',-43=>'b','c'array(3) {
    //    [-12]=>
    //  string(1) "a"
    //    [-43]=>
    //  string(1) "b"
    //    [0]=>
    //  string(1) "c"
    //}

动态创建下标连续的索引数组

    $arr1[]=12;
    $arr1[]=45678.9$arr1[]=true;
    print_r($arr1Array
    //(
    //    [0] => 12
    //    [1] => 45678.9
    //    [2] => 1
    //)

快速创建下标连续的索引数组

    range(1,10Array
    //(
    //    [0] => 1
    //    [1] => 2
    //    [2] => 3
    //    [3] => 4
    //    [4] => 5
    //    [5] => 6
    //    [6] => 7
    //    [7] => 8
    //    [8] => 9
    //    [9] => 10
    //)

手动指定步长的数组

    Array
    //(
    //    [0] => 1
    //    [1] => 3
    //    [2] => 5
    //    [3] => 7
    //    [4] => 9
    //)

    range('a','z');97~122
    $arr);

通过compact创建数组的时候,只能写已经存在的变量的名称,不需要加$

    $a=12$b=false$c=null$userInfo3=compact('a',1)">$userInfo3Array
    //(
    //    [a] => 12
    //    [b] => 
    //    [c] => 
    //)

定义常量数组
const在5.6之后可以定义常量

    const ARR2=[
      'a'=>'aa','b'=>'bb'
    ];
    print_r(ARR2);

通过define()定义常量数组

    define('CUSTOM_UPLOAD_ERRORS',[
      'ext_error'=>'上传文件扩展名不符合规范','maxsize_error'=>'上传文件大小不符合规范'
    ]);
    print_r(CUSTOM_UPLOAD_ERRORS);
    echo CUSTOM_UPLOAD_ERRORS['ext_error'];

删除指定元素unset

    $arr=['a',1)">];
    unset($arr[0]);
    Array
    //(
    //    [1] => b
    //    [2] => c
    //)

临时转换成数组

    $var=null;null转化成空数组
    $res=(array)$var$resarray(0) {
    }

永久转换成数组,settype($var,$type)

    $var=123settype($var,'array'array(1) {
        [0]=>
      int(123)
    }

合并数组
如果数组键名相同,只会使用左边数组元素的值

    $arr1=['a',1)">];
    $arr2=['d','e',1)">$newArr=$arr1+$arr2$newArrArray
    //(
    //    [0] => a
    //    [1] => b
    //[2] => c
    //)

== 比较数组的键名和键值是否相同,如果相同返回true,否则返回false
=== 既要比较键名和键值是否相同,而且顺序也要相同

    $a=[
      3=>'a','5'=>
    ];
    [
      5=>1,'3'=>'a'[
      '3'=>'a','5'=>1$a==$b,$a===$c,1)">$c);true false true false

数组运用

通过foreach遍历数组

     [
       5=>'a',12=>'b',-123=>'c',34=>'d'
     ];
     foreach($arr as $v){
       echo $v,"n";a b c d
     }
     $k=>$k,'--',"n"     5--a
    //     12--b
    //     -123--c
    //     34--d
     }

可以通过:和endforeach代替{}

    $val):
      $valendforeach;

foreach不再改变内部数组指针

    $arr=[0,1,1)">as &){
      current());
    }

foreach 通过值遍历时,操作的值为数组的副本

    $ref=&老版本会跳过1
    $val,'<br/>';0 1 2
      $arr[1]);
    }
    $arr,1)">$refarray(2) {
    //    [0]=>
    //  int(0)
    //  [2]=>
    //  int(2)
    //}
    //array(2) {
    //    [0]=>
    //  int(0)
    //  [2]=>
    //  int(2)
    //}

foreach通过引用遍历时,有更好的迭代特性
按照引用进行循环的时候,对数组的修改会影响循环

    $arr=['a'a b
      $arr[1]='b';
    }

数组指针相关函数
key($array):得到当前指针所在位置的键名,如果不存在返回null
current($array):得到当前指针所在位置的键值,如果不存在返回false
next($array):将数组指针向下移动一位,并且返回当前指针所在位置的键值;如果没有,返回false
prev($array):将数组指针向上移动一位,并且返回当前指针所在位置的键值;如果没有,返回false
reset($array):将数组指针移动到数组开始,并且返回当前指针所在位置的键值;如果没有,返回false
end($array):将数组指针移动到数组的末尾,并且返回当前指针所在位置的键值;如果没有,返回false

    [
      'a',35=>'test','username'=>'king','age'=>12/*
    Array
    (
        [0] => a
        [1] => b
        [2] => c
        [35] => test
        [username] => king
        [age] => 12
    )
    */
    echo '当前指针所在位置元素的键名为:',1)">key(0
    echo '当前指针所在位置元素的键值为:',1)">a
    next(b
    1
    b
    
    $arr)";//c
    echo '当前指针所在位置元素的键名为:',key();//2
    echo '当前指针所在位置元素的键值为:',current($arr),1)">;//c
    
    echo prev();//b
    echo '当前指针所在位置元素的键名为:',1)">);//1
    echo '当前指针所在位置元素的键值为:',1)">);//b
    
    echo end();//12
    echo '当前指针所在位置元素的键名为:',1)">);//age
    echo '当前指针所在位置元素的键值为:',1)">);//12
    var_dump(next());//bool(false) NULL bool(false)
    
    echo reset();//a
    echo '当前指针所在位置元素的键名为:',1)">);//0
    echo '当前指针所在位置元素的键值为:',1)">$arr);//a

循环全部输出

    [
        'a',''=>'aaa'while(!is_null())){
       echo '当前指针所在位置的键名为:',1)">;
       echo '当前指针所在位置的键值为:',1)">echo "n");
    }

获得扩展名

    $filename='1.txt.php.html'$res=explode('.',1)">$filename);
    $ext=end($res);指针移动到最后
    $ext;

list():将下标连续的从0开始的索引数组赋值给相应的变量

     ];
     list($var1,1)">$var2,1)">$var3)=;
     $var3;a b c

遍历二维数组

     [
       [1,'king1',12],1)">
       [2,'king2',22],1)">
       [3,'king3',32]
     ];
     as $id,1)">$username,1)">$age)){
       $age,1)">;
     }
    1-king1-12
    //2-king2-22
    //3-king3-32

each($array):得到当前指针所在位置的键值对,返回的是数组,包含4个部分;并且将指针向下移动一位

    [
      'a'=>'aaaa','b'=>'bbbb'
    ];
     each();
     Array
    //(
    //    [1] => aaaa
    //    [value] => aaaa
    //[0] => a
    //[key] => a
    //)

输出当前指针位置的键值

    a-aaaa

循环数组

    while($v)=)){
      ;
    }
    a--aaaa
    //b--bbbb

数组中所有键名组成字符串

    $userInfo=[
      'username'=>'king','password'=>'123456','email'=>'382771946@qq.com'$keys=join(',',1)">array_keys($userInfo));
    $keys);username,password,email

    //数组中所有键值转为字符串
    $vals="'".join("','",1)">array_values($userInfo))."'"$vals);'king','123456','382771946@qq.com'

    //拼接成sql语句: INSERT user(username,email) VALUES('king','382771946@qq.com')
    $sql="INSERT user({$keys}) VALUES({$vals})"$sql;INSERT user(username,'382771946@qq.com')

in_array()

    $allowExts=['jpg','jpeg','png','gif'$ext='jpg'in_array($ext,1)">$allowExts));bool(true)

字符串转数组并乱序

    $string='速,度,快,放,假,了'explode(',1)">$stringshuffle();

    将键名与键值反转
    array_flip(返回包含随机键名的数组 4个值
    array_rand($res);

字符串转数组,求和

    $sum='10,20,30'array_sum($sum));60

计算并返回数组的乘积

    echo array_product(6000

截取文件扩展名,并且检测扩展名是否在['jpg','gif','png']

    $filename='1.txt.php.jpg'$ext;jpg
    bool(true)

array_push():在最后追加数据
array_pop():删除最后一个,并返回
array_unshift():在前面追加数据
array_shift():删除第一个,并返回

    array_pop($res;c
    Array
    //(
    //    [0] => a
    //    [1] => b
    //)

    array_push(Array
    //(
    //    [0] => a
    //    [1] => b
    //[2] => c
    //[3] => hello world
    //[4] => 123
    //)

    array_shift(Array
    //(
    //    [0] => b
    //    [1] => c
    //)

    array_unshift(Array
    //(
    //    [0] => d
    //    [1] => a
    //[2] => b
    //[3] => c
    //)

判断文件类型是否合法

    $filename='1.txt.jpg'if($allowExtsecho '文件类型合法';
    }else{
      echo '非法文件类型';
    }

快速生成字符串

    $str1=join('',1)">range(0,9));string(10) "0123456789"
    $str2=string(26) "abcdefghijklmnopqrstuvwxyz"
    $str3=range('A','Z'));string(26) "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

生成四位数随机验证码

    $arr1=$arr2=$arr3=$newArr=array_merge($arr1,1)">$arr2,1)">$arr3);
    
    array_rand($newArr),1)">$res);

检测文件是否存在

    $filename="msg.txt"$msgs=[];
    file_exists(读取文件中的内容
      $string=file_get_contents();
      strlen($string)>0){
        unserialize();
      }
    }

留言功能

    检测用户是否点击了提交按钮
    isset($_POST['pubMsg'])){
      $username=$_POST['username'];
      $title=strip_tags($_POST['title']);
      $content=$_POST['content'$time=time();
      将其组成关联数组
      $data=compact('username','title','content','time'$msgs,1)">$data);
      serialize($msgsfile_put_contents($filename,1)">)){
        echo "<script>alert('留言成功!');location.href='22-msg.php';</script>";
      }{
        echo "<script>alert('留言失败!');location.href='22-msg.php';</script>";
      }
    }

count()得到数组中元素的个数

    count(26

     $var),1)">1
     0

for循环只能遍历下标连续的索引数组

    [
        5=>'a',-12=>'b',345=>'c'
    ];不行
    [
        'username'=>'king',1)">不行
     for($i=0,1)">$count=$arr)-1;$i<=$count;$i++$arr[$i],'<br/>';
     }

HTML 与 PHP 混编
if举例

    <?php true){ ?>
    <span>成功</span>
    <?Php }else{ ?>
    <span>失败</span>
    <?php } ?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读