PHP 数组

1.数组的创建

(1)创建数组使用array()方法
(2)数组分为索引数组和关联数组,前者使用下标访问数组元素,后者使用key访问

<?php

//使用array()方法创建索引数组
$arr = array(1,2,3);
//通过下标访问数组元素
echo $arr[0];
echo $arr[1];
echo $arr[2];

echo "<br>";

//创建关联数组
$arr2 = array(
    "name"=> "kyo",
    "age"=> 20,
);
//关联数组通过key访问数组元素
echo $arr2['name'];
echo $arr2['age'];

?>

2.数组长度

通过调用count()方法,传入数组来返回改数组的长度

<?php


//使用array()方法创建索引数组
$arr = array(1,2,3);
//获取数组长度
$length = count($arr);
echo "数组的长度为$length"; //3

echo "<br>";

//创建索引数组
$arr2 = array(
    "name"=> "kyo",
    "age"=> 20,
);
//获取数组长度
$length2 = count($arr2);
echo "数组的长度为$length2"; //2

?>

3.数组遍历

  • for()循环配合下标来遍历索引数组
<?php

//使用array()方法创建索引数组
$arr = array(1,2,3);
//获取数组长度
$length = count($arr);
for($i=0;$i<$length;$i++){
    echo $arr[$i];
    echo "<br>";
};
?>

  • foreach遍历数组
<?php


//使用array()方法创建索引数组
$arr = array(1,2,3);

//遍历索引数组
foreach($arr as $item){
    echo $item;
    echo "<br>";
};

echo "<br>";

//创建关联数组
$arr2 = array(
    "name"=> "kyo",
    "age"=> 20,
);
//遍历关联数组
foreach($arr2 as $key=>$key_val){
    echo "$key:$key_val";
    echo "<br>";
};

?>

4.php数组转换成json

php里面,索引数组的格式与json是一致的,但是关联数组就不一样,他更像是json中的对象,使用json_encode()可以将php数组转换成json格式

<?php
//使用array()方法创建索引数组
$arr = array(1,2,3);
echo json_encode($arr);

echo "<br>";

//创建关联数组
$arr2 = array(
    "name"=> "kyo",
    "age"=> 20,
);
echo json_encode($arr2);

echo "<br>";

//所谓二维数组
$arr3 = array(
    array(
        "name"=> "kyo",
        "age"=> 20,
    ),
    array(
        "name"=> "orochi",
        "age"=> 30,
    )
);
echo json_encode($arr3);

?>

5.数组排序

  • sort()对数组元素进行升序排列,会改变原数组,适用于索引数组
<?php

    //纯数字数字
    $arr = array(11,2,16);
    sort($arr);
    echo json_encode($arr); //[2,11,16]
    echo "<br>";

    //数字字符串数组
    $arr2 = array('11','2','16');
    sort($arr2);
    echo json_encode($arr2); //["2","11","17"]
    echo "<br>";

    //字符串数组
    $arr3 = array('a','h','A');
    sort($arr3);
    echo json_encode($arr3); //["A","a","h"]
    echo "<br>";

    //混合
    $arr4 = array('c','a','5','1','3','C','A');
    sort($arr4);
    echo json_encode($arr4); //["1","3","5","A","C","a","c"]
    echo "<br>";

    ?>
  • rsort() - 对数组进行降序排列,用法同上,适用于索引数组
<?php

    //纯数字数字
    $arr = array(11,2,16);
    rsort($arr);
    echo json_encode($arr); //[16,11,2]
    echo "<br>";

    //数字字符串数组
    $arr2 = array('11','2','16');
    rsort($arr2);
    echo json_encode($arr2); //["16","11","2"]
    echo "<br>";

    //字符串数组
    $arr3 = array('a','h','A');
    rsort($arr3);
    echo json_encode($arr3); //["h","a","A"]
    echo "<br>";

    //混合
    $arr4 = array('c','a','5','1','3','C','A');
    rsort($arr4);
    echo json_encode($arr4); //["c","a","C","A","5","3","1"]
    echo "<br>";

    ?>
  • asort()适用于关联数组,根据key对应的值来进行升序排序,arsort()为降序
<?php
        $arr = array(
            "name"=>'kyo',
            "friend"=>"daimen",
            "age"=> 21
        );
        asort($arr);
        //会改变原数组 d < k < 2
        print_r($arr);//Array ( [friend] => daimen [name] => kyo [age] => 21 )
?>
  • ksort()适用于关联数组,根据key来进行升序排序,krsort()为降序
<?php
        $arr = array(
            "name"=>'kyo',
            "friend"=>"daimen",
            "age"=> 21
        );
        ksort($arr);
        //会改变原数组 a < f < n
        print_r($arr);//Array ( [age] => 21 [friend] => daimen [name] => kyo )
?>

6.数组元素添加与删除

  • array_push()在数组的后面添加一个或多个元素
<?php
        $arr = array(1,2,3,4);
        array_push($arr,5,6);
        print_r($arr); //array(1,2,3,4,5,6)
?>
  • array_pop()删除数组中的最后一个元素
<?php
        $arr = array(1,2,3,4);
        array_pop($arr);
        print_r($arr); //array(1,2,3)
?>
  • array_shift()删除数组的第一个元素
<?php
        $arr = array(1,2,3,4);
        array_shift($arr);
        print_r($arr); //array(2,3,4)
?>
  • array_unshift()在数组的前面添加一个或多个元素
<?php
        $arr = array(1,2,3,4);
        array_unshift($arr,-1,0);
        print_r($arr); //array(-1,0,1,2,3,4)
?>
  • array_splice() 函数从数组中移除选定的元素,并用新元素取代它
参数 描述
参数一 必需。规定数组
参数二 必需。数值。规定删除元素的开始位置,支持负数
参数三 可选。数值。规定被移除的元素个数,默认删除值数组最后一个元素
参数四 可选。要插入的元素
<?php
        $arr = array(1,2,3,4);
        array_splice($arr,2,1,6);
        print_r($arr); //array(1,2,6,4)
    ?>

7.返回关联数组中所有的键名

array_keys()返回数组key组成的一个索引数组,适用于关联数组

PS:php中的数组类似于js中的对象,这个方法与js的Object.keys()效果一致


<?php
        $arr = array(
            "name"=>'kyo',
            "friend"=>"daimen",
            "age"=> 21
        );
        print_r(array_keys($arr));//Array ( [0] => name [1] => friend [2] => age )
?>

8.快捷遍历

虽然foreach循环可以遍历所有的数组,但是特定的应用场景中,一些方法更为方便。
以下的方法都有一个共同点:需要额外定义一个方法,来处理每个遍历时的逻辑

  • array_map(fn,arr)映射,fn中的参数就是遍历时的数组元素,注意 fn 是字符串
<?php
        $arr = array(1,2,3);
        function double($item){
            return $item*2;
        };
        //注意 fn 是字符串
        print_r(array_map('double',$arr));//Array ( [0] => 2 [1] => 4 [2] => 6 )
?>

  • array_filter(arr,fn)过滤,fn中的参数就是遍历时的数组元素,注意 fn 是字符串,且过滤出来的数组元素的下标使用的是旧的下标
<?php
        $arr = array(1,2,3);
        function test($item){
            return $item>2;
        };
        //注意 fn 是字符串
        print_r(array_filter($arr,'test'));//Array ( [2] => 3 )
?>

9.查找下标

  • array_search() 函数在数组中搜索某个键值,并返回对应的键名。否则返回 FALSE
<?php
        $arr = array(1,2,3,4);
        $index = array_search(4,$arr);
        print_r($index); //3
?>

10.查找元素

  • in_array()搜索数组中是否存在指定的值
<?php
        $arr = array(1,2,3,4);
        $flag = in_array(4,$arr);
       if($flag){
           echo "数组存在 4 ";
       }else{
           echo "数组不存在 4 ";
       }
?>
posted @ 2021-02-15 16:46  ---空白---  阅读(134)  评论(0编辑  收藏  举报