PHP函数篇(三)---数组函数篇(1)

172 阅读3分钟

本文已参与【新人创作礼】活动 ,一起开启掘金创作之路

# 1、对数组键和值进行操作的函数

array_values

定义和用法

array_values() 函数返回数组中所有的这些值以数组的形式呈现。

注释: 被返回的数组将使用数字键,从0开始且以步长1为递增基数

语法 array_values(array)

    # 创建一个颜色数组
    $color_arr = array('红', '蓝', '白', '紫', '黑');
    dump($color_arr);
    ## 输出 
    array:5 [▼
      0 => "红"
      1 => "蓝"
      2 => "白"
      3 => "紫"
      4 => "黑"
    ]
     
    # 循环将数组置空
    foreach ($color_arr as $i => $value) {
        unset($color_arr[$i]);
    }
    dump($color_arr);
    ## 输出 []
    
    
    # 新增一个元素(注意新增元素的键名是5,而不是0)
    $color_arr[] = '绿';
    dump($color_arr);
    ## 输出 
    array:1 [▼
      5 => "绿"
    ]

    # 重置键名(从0开始自增 步长为1):
    $color_arr = array_values($color_arr);
    $color_arr[] = '黄';
    dump($color_arr);  
    ## 输出 
    array:2 [▼
      0 => "绿"
      1 => "黄"
    ]

array_keys

定义和用法

array_keys() 函数返回包含数组中所有键名组成的一个新数组。

语法 array_keys(array,value,strict)

参数描述
array必需。规定数组
value可选。您可以指定键值,然后只有该键值对应的键名会被返回
strict可选。与 value 参数一起使用。可能的值:- true - 返回带有指定键值的键名。依赖类型,数字 5 与字符串 "5" 是不同的。- false - 默认值。不依赖类型,数字 5 与字符串 "5" 是相同的。
    
    # 使用 value 参数:
    $arr = array("中国"=>"红旗","德国"=>"大众","英国"=>"捷豹","日本"=>"丰田");
    
    var_dump(array_keys($arr,"红旗"));
    # 输出
    array (size=1)
        0 => string '中国' (length=6)

    # 使用 strict 参数 (false):
    $arr = array(666,888,520,"1314",1314);
    
    var_dump(array_keys($arr,"1314",false));
    # 输出
    array (size=2)
       0 => int 3
       1 => int 4

    # 使用 strict 参数 (true):
    $arr = array(666,888,1314,"520",520);
    
    # 输出
    array (size=1)
        0 => int 3

array_flip

定义和用法

# array_flip() 函数用于反转/交换数组中的键名和对应关联的键值

语法 array_flip(array)

    ## 数组去重
    $arr = array ("id" => 1314, "id" =>1314, "name" => 'james');
    $arr = array_flip(array_flip($arr));
    
    var_dump($arr);
    # 输出
    array (size=2)
      'id' => int 1314
      'name' => string 'james' (length=5) 

in_array

定义和用法

# in_array() 函数搜索数组中是否存在指定的值

语法 bool in_array ( mixed needle,arrayneedle , array haystack [, bool $strict = FALSE ] )

参数描述
needle必需。规定要在数组搜索的值。
haystack必需。规定要搜索的数组。
strict可选。如果该参数设置为 TRUE,则 in_array() 函数检查搜索的数据与数组的值的类型是否相同。
    $arr = array("Yao", "Wade", "Kobe", "James", 18);

    # 例一 输出 boolean false
    var_dump(in_array("18", $arr, true));

    # 例二 输出 boolean true
    var_dump(in_array(18,$arr, true));

    # 例三 输出 boolean true
    var_dump(in_array("Yao",$arr, true));

array_search

定义和用法

# array_search() 函数在数组中搜索某个键值,并返回对应的键名

语法 array_search(value,array,strict)

参数描述
value必需。规定在数组中搜索的键值。
array必需。规定被搜索的数组。
strict可选。如果该参数被设置为 TRUE,则函数在数组中搜索数据类型和值都一致的元素。可能的值: true false-默认 如果设置为 true,则在数组中检查给定值的类型,数字 5 和字符串 5 是不同的(参见实例 2)
    # 从数组中找到指定元素的位置的方法
    $arr = array("Wade", "Kobe", "Yao", "James", 18);
    $target = "Yao";
     
    ## foreach 循环查找
    function searchByLoop($arr,$target){
        foreach($arr as $key => $val){
            if ($val == $target) {
                return $key;
            }
        }
    }
   
    var_dump(searchByLoop($arr,$target));
    # 输出 int 2
    
   
    ## array_search 函数
    function searchByFunc($arr,$target){
        return array_search($target,$arr);
    }
    
    var_dump(searchByFunc($arr,$target));
   # 输出 int 2
   
  
    ## 通过array_flip键值反转查找
    function searchByArrayFlip($arr,$target){
        $arr = array_flip($arr);
        return $arr[$target];
    }

    var_dump(searchByArrayFlip($arr,$target));
    # 输出 int 2

array_key_exists

定义和用法

# array_key_exists() 函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false

语法 array_key_exists(key,array)

isset

定义和用法

# isset() 函数用于检测变量是否已设置并且非 NULL

语法 bool isset ( mixed var[,mixedvar [, mixed ... ] )

注意 如果一次传入多个参数,那么 isset() 只有在全部参数都被设置时返回 TRUE,计算过程从左至右,中途遇到没有设置的变量时就会立即停止。

返回值 如果指定变量存在且不为 NULL,则返回 TRUE,否则返回 FALSE

    # 针对变量的操作
    $temp = '';

    ## 空字符串返回true
    if (isset($temp)) {
        echo "变量已设置." . PHP_EOL;
    }

    # 定义变量
    $temp = "芭比Q了";$othertemp = "破防";

    ## 可以判断一个变量 也可以同时判断多个
    
    var_dump(isset($temp));            ## boolean true
    
    var_dump(isset($temp, $othertemp));## boolean true

    ## 对变量进行unset操作后再判断结果为false
    unset ($temp);

    var_dump(isset($temp));            ## boolean false
    
    var_dump(isset($temp, $othertemp)); ## boolean false

    ## 如果变量直接为null 返回false
    $temp = NULL;
    var_dump(isset($temp));## boolean false   
    
    
    # 针对数组的操作
    $tempArr = array ('spring' => 'green', 'summer' => 'red', 'autumn' => array('temp' => 'yellow'),'winter'=>null);

    var_dump(isset($tempArr['spring']));        ## boolean true
    var_dump(isset($tempArr['winter']));        ## boolean false
    var_dump(isset($tempArr['autumn']['abc'])); ## boolean false
    
    ## array_key_exists() 与 isset() 的区别
    #### 一个基本的区别是isset()可用于数组和变量,而array_key_exits()只能用于数组.

    #### 但是最主要的区别在于在设定的条件下的返回值.

    ### array_key_exists() 会检查键的存在. 这个函数会返回true,只要键存在,即使值为null,也返回true.

    $temp = array( "sweety"=>"王心凌", "classic"=>"twins", "other"=>null );
    var_dump(array_key_exists("sweety", $temp));  ## boolean true

    var_dump(array_key_exists("classic", $temp)); ## boolean true

    var_dump(array_key_exists("other", $temp));   ## boolean true

    ### 和arrry_key_exitst()不同,isset()会同时检查键和值,只有当健存在,对应的值不为null的时候才会返回ture.

    var_dump(isset($temp["sweety"]));  ## boolean true

    var_dump(isset($temp["classic"])); ## boolean true

    var_dump(isset($temp["other"]));   ## boolean false