美文网首页程序员
关于PHP的数组问题之函数

关于PHP的数组问题之函数

作者: 媛_飞 | 来源:发表于2019-03-15 11:26 被阅读0次

    一、array_change_key_case — 将 array 数组中的所有键名改为全小写或大写

    array_change_key_case ---- 针对关联数组
    array_change_key_case ( array $array [, int $case = CASE_LOWER ] ) : array
    

    $case值:CASE_UPPER (大写),CASE_LOWER(小写,默认值)

    array_change_key_case()将 array 数组中的所有键名改为全小写或大写。本函数不改变数字索引。

    —————————————————————————————————————————————

    二、array_chunk — 将一个数组分割成多个 --(常用)

    array_chunk:将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size 个


    array_chunk ( array $array , int $size [, bool $preserve_keys = false ] ) : array
    

    size
      每个数组的单元数目
    preserve_keys
      设为 TRUE,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE,那每个结果数组将用从零开始的新数字索引。默认值是 FALSE。


    Example #1 array_chunk() 例子

    $input_array = array('a', 'b', 'c', 'd', 'e');
    print_r(array_chunk($input_array, 2));
    print_r(array_chunk($input_array, 2, true));
    ?>
    

    以上例程会输出:

    (
        [0] => Array
            (
                [0] => a
                [1] => b
            )
    
        [1] => Array
            (
                [0] => c
                [1] => d
            )
    
        [2] => Array
            (
                [0] => e
            )
    
    )
    
    Array
    (
        [0] => Array
            (
                [0] => a
                [1] => b
            )
    
        [1] => Array
            (
                [2] => c
                [3] => d
            )
    
        [2] => Array
            (
                [4] => e
            )
    )
    

    —————————————————————————————————————————————

    三、array_column — 返回数组中指定的一列 -- 常用

    array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) : array
    

    array_column()返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。


    参数说明
    input
     需要取出数组列的多维数组。 如果提供的是包含一组对象的数组,只有 public 属性会被直接取出。 为了也能取出 private 和 protected 属性,类必须实现 __get() 和 __isset() 魔术方法。
    column_key
     需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键,也可以是属性名。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用)
    index_key
     作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。
    将键与值合并

    返回值
     从多维数组中返回单列数组。

    —————————————————————————————————————————————

    四、array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 -- (较常用)

    array_combine ( array $keys , array $values ) : array
     返回一个 array,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。
    array_combine()


    exp:
            $arr= ['姓名','年龄','身高','性别'];
            $arrValue = ['小米','18','180','男'];
            var_dump(array_combine($arr, $arrValue));
    结果:
              array (size=4)
            '姓名' => string '小米' (length=6)
            '年龄' => string '18' (length=2)
            '身高' => string '180' (length=3)
            '性别' => string '男' (length=3)
    

    —————————————————————————————————————————————

    五、array_count_values — 统计数组中所有的值

    array_count_values ( array $array ) : array
    array_count_values() 返回一个数组: 数组的键是 array 里单元的值; 数组的值是 array 单元的值出现的次数。


    Example #1 array_count_values() 例子

    <?php
    $array = array(1, "hello", 1, "world", "hello");
    print_r(array_count_values($array));
    ?>
    

    以上例程会输出:

    Array
    (
        [1] => 2
        [hello] => 2
        [world] => 1
    )
    

    —————————————————————————————————————————————

    六、计算数组的交集“家族”

    1、array_diff_assoc — 带索引检查计算数组的差集(比较键与值)


    Example #1 array_diff_assoc() 例子
      下面的例子中可以看到键值对 "a" => "green" 在两个数组中都有,因此不在本函数的输出中。与此不同,键值对 0 => "red" 出现在输出中是因为第二个参数中的 "red" 的键名是 1。

    <?php
    $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
    $array2 = array("a" => "green", "yellow", "red");
    $result = array_diff_assoc($array1, $array2);
    print_r($result);
    ?>
    

    以上例程会输出:

    Array
    (
        [b] => brown
        [c] => blue
        [0] => red
    )
    

    Example #2 array_diff_assoc() example
      键值对 key => value 中的两个值仅在 (string) elem1 === (string)elem2 时被认为相等。也就是说使用了严格检查,字符串的表达必须相同。
    array_merge() 函数用于把一个或多个数组合并为一个数组。
    提示:您可以向函数输入一个或者多个数组。
    注释:如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。
    注释:如果您仅仅向 array_merge() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引
    注释: 如果为索引数组则不会覆盖元素

    <?php
    $array1 = array(0, 1, 2);
    $array2 = array("00", "01", "2");
    $result = array_diff_assoc($array1, $array2);
    print_r($result);
    ?>
    

    以上例程会输出:

    Array
    (
        [0] => 0
        [1] => 1
    )
    

    Note: 注意本函数只检查了多维数组中的一维。当然可以用 array_diff_assoc(array1[0],array2[0]); 检查更深的维度。
    Note: 使用更多的键比较相似数组时,确保你传入参数的顺序是正确的。 新的数组应该是在列表里的第一个。


    2、array_diff_key — 使用键名比较计算数组的差集

    Example #1 array_diff_key() 例
      在 key => value 对中的两个键名仅在 (string) key1 === (string)key2 时被认为相等。换句话说,执行的是严格类型检查,因此字符串的表达必须完全一样。

    <?php
    $array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
    $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
    var_dump(array_diff_key($array1, $array2));
    ?>
    

    以上例程会输出:

    array(2) {
      ["red"]=>
      int(2)
      ["purple"]=>
      int(4)
    }
    
      注释:以上函数是用$array1来和$array2比较返回$array1在$array2中不一样的值
    

    3、array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集(自定义函数来控制)

    Example #1 array_diff_uassoc() 例子
      下面的例子中 "a" => "green" 出现在两个数组中因此不在函数的输出中。但是 0 => "red" 却在输出中,因为第二个参数中的 "red" 的键名是 1。

    <?php
    function key_compare_func($a, $b)
    {
        if ($a === $b) {
            return 0;
        }
        return ($a > $b)? 1:-1;
    }
    
    $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
    $array2 = array("a" => "green", "yellow", "red");
    $result = array_diff_uassoc($array1, $array2, "key_compare_func");
    print_r($result);
    ?>
    

    以上例程会输出:

    Array
    (
        [b] => brown
        [c] => blue
        [0] => red
    )
    

    4、array_diff_ukey — 用回调函数对键名比较计算数组的差集

    Example #1 array_diff_ukey() 例子

    <?php
    function key_compare_func($key1, $key2)
    {
        if ($key1 == $key2)
            return 0;
        else if ($key1 > $key2)
            return 1;
        else
            return -1;
    }
    
    $array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
    $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
    
    var_dump(array_diff_ukey($array1, $array2, 'key_compare_func'));
    ?>
    

    以上例程会输出:

    array(2) {
      ["red"]=>
      int(2)
      ["purple"]=>
      int(4)
    }
    

    5、array_diff — 计算数组的差集(很常见) --- 比较数组中的值

    Example #1 array_diff() 例子

    <?php
    $array1 = array("a" => "green", "red", "blue", "red");
    $array2 = array("b" => "green", "yellow", "red");
    $result = array_diff($array1, $array2);
    print_r($result);
    ?>
    

    在 $array1 中多次出现的值一样处理,输出结果为:

    Array
    (
        [1] => blue
    )
    

    —————————————————————————————————————————————

    七、array_flip — 交换数组中的键和值

    array_flip ( array $array ) : array
    array_flip() 返回一个反转后的 array,例如 array 中的键名变成了值,而 array 中的值成了键名。


    注意 :array 中的值需要能够作为合法的键名(例如需要是 integer (整型)或者 string(字符串))。如果类型不对,将出现一个警告,并且有问题的键/值对将不会出现在结果里。
    如果同一个值出现多次,则最后一个键名将作为它的值,其它键会被丢弃
    失败了会返回NULL

    Example #1 array_count_values() 例子

    <?php
    $input = array("oranges", "apples", "pears");
    $flipped = array_flip($input);
    
    print_r($flipped);
    ?>
    

    以上结果输出为:

    Array
    (
        [oranges] => 0
        [apples] => 1
        [pears] => 2
    )
    

    Example #2 array_flip() 例子 : 冲突

    <?php
    $input = array("a" => 1, "b" => 1, "c" => 2);
    $flipped = array_flip($input);
    
    print_r($flipped);
    ?>
    

    以上结果输出为:

    Array
    (
        [1] => b
        [2] => c
    )
    数组$input中以'a'为键的不会返回--因为对应的值为1
    

    —————————————————————————————————————————————

    八、array_intersect -- 检查数组的交集家族 (都以第一个数组为主值)

      (一)array_intersect_assoc — 带索引检查计算数组的交集

    array_intersect_assoc ( array $array1 , array $array2 [, array $... ] ) : array

    array_intersect_assoc() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和array_intersect() 不同的是键名也用于比较。
    键与值必须都一样才会返回

    Example #1 array_intersect_assoc() 例子

    <?php
    $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
    $array2 = array("a" => "green", "b" => "yellow", "blue", "red");
    $result_array = array_intersect_assoc($array1, $array2);
    print_r($result_array);
    ?>
    

    以上例程会输出:

    Array
    (
        [a] => green
    )
    

    —————————————————————————————————————————————

      (二)array_intersect_key — 使用键名比较计算数组的交集

    array_intersect_key ( array $array1 , array $array2 [, array $... ] ) : array

    array_intersect_key() 返回一个数组,该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值。

    <?php
    $array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
    $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
    
    var_dump(array_intersect_key($array1, $array2));
    ?>
    

    以上例程会输出:

    array(2) {
      ["blue"]=>
      int(1)
      ["green"]=>
      int(3)
    }
    键名一样就行,但返回的值是以第一个数组为主
    

    (三)array_intersect — 计算数组的交集

    array_intersect ( array $array1 , array $array2 [, array $... ] ) : array

    array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。

    Example #1 array_intersect() 例子

    <?php
    $array1 = array("a" => "green", "red", "blue");
    $array2 = array("b" => "green", "yellow", "red");
    $result = array_intersect($array1, $array2);
    print_r($result);
    ?>
    

    以上例程会输出:

    Array
    (
        [a] => green
        [0] => red
    )
    

    Note: 以上系列函数中对比时两个单元仅在 (string) elem1 === (string)elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。

    —————————————————————————————————————————————

    九、array_key_exists — 检查数组里是否有指定的键名或索引(别名: key_exists)

    array_key_exists ( mixed $key , array $array ) : bool
    数组里有键 key 时,array_key_exists() 返回 TRUE。 key 可以是任何能作为数组索引的值。
    

    Note:
    array_key_exists() 仅仅搜索第一维的键。 多维数组里嵌套的键不会被搜索到。

    array_key_exists()、empty()、isset()的简单区别

    —————————————————————————————————————————————

    十、array_keys — 返回数组中部分的或所有的键名

    array_keys ( array $array [, mixed $search_value = null [, bool $strict = false ]] ) : array
    

    参数
    input
    一个数组,包含了要返回的键。
    search_value
    如果指定了这个参数,只有包含这些值的键才会返回。
    strict
    判断在搜索的时候是否该使用严格的比较(===)。
    —————————————————————————————————————————————
    返回值
    返回 input 里的所有键。


    Example #1 array_keys() 例子

    <?php
    $array = array(0 => 100, "color" => "red");
    print_r(array_keys($array));
    
    $array = array("blue", "red", "green", "blue", "blue");
    print_r(array_keys($array, "blue"));
    
    $array = array("color" => array("blue", "red", "green"),
                   "size"  => array("small", "medium", "large"));
    print_r(array_keys($array));
    ?>
    

    以上例程会输出:

    Array
    (
        [0] => 0
        [1] => color
    )
    Array
    (
        [0] => 0
        [1] => 3
        [2] => 4
    )
    Array
    (
        [0] => color
        [1] => size
    )
    

    —————————————————————————————————————————————

    十一、array_merge_recursive递归地合并一个或多个数组

    array_merge_recursive ( array $array1 [, array $... ] ) : array

    array_merge_recursive()将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。注:无论是索引数组还是关联数组
      如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。需要注意的是,如果数组具有相同的数值键名,后一个值将不会覆盖原来的值,而是附加到后面。


    Example #1 array_merge_recursive() 例子

    <?php
    $ar1 = array("color" => array("favorite" => "red"), 5);
    $ar2 = array(10, "color" => array("favorite" => "green", "blue"));
    $result = array_merge_recursive($ar1, $ar2);
    print_r($result);
    ?>
    

    以上例程会输出:

    Array
    (
        [color] => Array
            (
                [favorite] => Array
                    (
                        [0] => red
                        [1] => green
                    )
    
                [0] => blue
            )
    
        [0] => 5
        [1] => 10
    )
    

    —————————————————————————————————————————————

    十二、array_merge — 合并一个或多个数组

    array_merge ( array $array1 [, array $... ] ) : array

    array_merge()将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
     如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
     如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。


    Example #1 array_merge() 例子

    <?php
    $array1 = array("color" => "red", 2, 4);
    $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
    $result = array_merge($array1, $array2);
    print_r($result);
    ?>
    

    以上例程会输出:

    Array
    (
        [color] => green
        [0] => 2
        [1] => 4
        [2] => a
        [3] => b
        [shape] => trapezoid
        [4] => 4
    )
    

    如果你想完全保留原有数组并只想新的数组附加到后面,用 + 运算符(同键名时保留第一个,忽略第二个)


    Example #2 Simple array_merge() 例子

    <?php
    $array1 = array();
    $array2 = array(1 => "data");
    $result = array_merge($array1, $array2);
    ?>
    

    以上例程会输出:(别忘了数字键名将会被重新编号!)

    Array
    (
        [0] => data
    )
    

    —————————————————————————————————————————————

    十三、array_multisort — 对多个数组或多维数组进行排序


    作者看了半天没看懂,思维太肤浅了
    —————————————————————————————————————————————

    十四、在数组中进行加与乘运算的函数

    (一)array_product — 计算数组中所有值的乘积

    array_product ( array $array ) : number

    array_product() 以整数或浮点数返回一个数组中所有值的乘积。
    5.3.6 空数组现在会产生 1,而之前此函数处理空数组会产生 0。


    Example #1 array_product() 例子

    <?php
    
    $a = array(2, 4, 6, 8);
    echo "product(a) = " . array_product($a) . "\n";
    echo "product(array()) = " . array_product(array()) . "\n";
    ?>
    

    以上例程会输出:

    product(a) = 384
    product(array()) = 1
    

    (二)array_sum — 对数组中所有值求和

    array_sum ( array $array ) : number
    array_sum() 将数组中的所有值相加,并返回结果。

    返回值说明
    所有值的和以整数或浮点数的结果返回,array 为空时则返回 0。


    Example #1 array_sum() 例子

    <?php
    $a = array(2, 4, 6, 8);
    echo "sum(a) = " . array_sum($a) . "\n";
    
    $b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
    echo "sum(b) = " . array_sum($b) . "\n";
    ?>
    

    以上例程会输出:

    sum(a) = 20
    sum(b) = 6.9
    

    —————————————————————————————————————————————

    十五、array_reverse — 返回单元顺序相反的数组

    array_reverse ( array $array [, bool $preserve_keys = FALSE ] ) : array
    array_reverse() 接受数组 array 作为输入并返回一个单元为相反顺序的新数组。

    参数说明
    array
    输入的数组。
    preserve_keys
    如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。


    Example #1 array_reverse() 例子

    <?php
    $input  = array("php", 4.0, array("green", "red"));
    $reversed = array_reverse($input);
    $preserved = array_reverse($input, true);
    
    print_r($input);
    print_r($reversed);
    print_r($preserved);
    ?>
    

    以上结果会输出:

    Array
    (
        [0] => php
        [1] => 4
        [2] => Array
            (
                [0] => green
                [1] => red
            )
    
    )
    Array
    (
        [0] => Array
            (
                [0] => green
                [1] => red
            )
    
        [1] => 4
        [2] => php
    )
    Array
    (
        [2] => Array
            (
                [0] => green
                [1] => red
            )
    
        [1] => 4
        [0] => php
    )
    

    —————————————————————————————————————————————

    十六、array_unique — 移除数组中重复的值 (较常用)

    array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) : array

    array_unique()接受 array 作为输入并返回没有重复值的新数组。
    注意键名保留不变。array_unique() **先将值作为字符串排序,然后对每个值只保留第一个遇到的键名**,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。
    Note: 当且仅当 (string) elem1 === (string)elem2 时两个单元被认为相同。 例如,字符串表达一样时,会使用首个元素。

    参数说明
    array
    输入的数组。
    sort_flags
    第二个可选参数sort_flags 可用于修改排序行为:
    排序类型标记:
    SORT_REGULAR - 按照通常方法比较(不修改类型)
    SORT_NUMERIC - 按照数字形式比较
    SORT_STRING - 按照字符串形式比较(默认值)
    SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。


    Example #1 array_unique() 例子

    <?php
    $input = array("a" => "green", "red", "b" => "green", "blue", "red");
    $result = array_unique($input);
    print_r($result);
    ?>
    

    以上例程会输出:

    Array
    (
        [a] => green
        [0] => red
        [1] => blue
    )
    

    Example #2 array_unique() 和类型

    <?php
    $input = array(4, "4", "3", 4, 3, "3");
    $result = array_unique($input);
    var_dump($result);
    ?>
    

    以上例程会输出:

    array(2) {
      [0] => int(4)
      [2] => string(1) "3"
    }
    

    —————————————————————————————————————————————

    十七、array_unshift — 在数组开头插入一个或多个单元

    array_unshift ( array &$array [, mixed $... ] ) : int

    array_unshift() 将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。
    注意: 返回值
    返回 array 数组新的单元数目

    Notice:
    7.3.0 现在可以只用一个参数来调用,之前至少需要两个参数。


    Example #1 array_unshift() 例子

    $queue = array("orange", "banana");
    array_unshift($queue, "apple", "raspberry");
    print_r($queue);
    ?>
    

    以上例程会输出:

    Array
    (
        [0] => apple
        [1] => raspberry
        [2] => orange
        [3] => banana
    )
    

    —————————————————————————————————————————————

    十八、array_values — 返回数组中所有的值

    array_values ( array $array ) : array
    array_values() 返回 input 数组中所有的值并给其建立数字索引
    换句话说返回的结果会返回含所有值的索引数组


    Example #1 array_values() 例子

    <?php
    $array = array("size" => "XL", "color" => "gold");
    print_r(array_values($array));
    ?>
    

    以上例程会输出:

    Array
    (
        [0] => XL
        [1] => gold
    )
    

    —————————————————————————————————————————————

    更多的数组函数详情可参考官网-->

    本人觉得PHP在对数组的介绍还是挺详细的(拙见)


    —————————————————————————————————————————————

    十九、关于数组的排序问题-->更多好看的数组排序

    1) sort — 对数组排序

    sort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
    本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。

    Note: 此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。
    Warning 在对含有混合类型值的数组排序时要小心,因为 sort() 可能会产生不可预知的结果。


    2) rsort — 对数组逆向排序

    rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
    数对数组进行逆向排序(最高到最低)。

    Note: 此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。


    3) arsort — 对数组进行逆向排序并保持索引关系

    arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool

    本函数对数组进行排序,数组的索引保持和单元的关联。
    主要用于对那些单元顺序很重要的结合数组进行排序。
    键不变,根据值来排序

    参数
    array
    要排序的数组。
    sort_flags
    可选的第二个参数 sort_flags 可以用以下值改变排序的行为:
    排序类型标记:
    SORT_REGULAR - 正常比较单元(不改变类型)(默认)
    SORT_NUMERIC - 单元被作为数字来比较
    SORT_STRING - 单元被作为字符串来比较
    SORT_LOCALE_STRING - 根据当前的区域(locale)设置来把单元当作字符串比较,可以用 setlocale() 来改变。
    SORT_NATURAL - 和 natsort() 类似对每个单元以“自然的顺序”对字符串进行排序。 PHP 5.4.0 中新增的。
    SORT_FLAG_CASE - 能够与 SORT_STRING 或 SORT_NATURAL 合并(OR 位运算),不区分大小写排序字符串。


    4) asort — 对数组进行排序并保持索引关系

    asort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool

    本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
    键不变,根据值来排序


    5) krsort — 对数组按照键名逆向排序

    krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
    对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组。


    6) ksort — 对数组按照键名排序

    ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
    对数组按照键名排序,保留键名到数据的关联。本函数主要用于关联数组。


    返回值统一说明
    成功时返回 TRUE, 或者在失败时返回 FALSE。

    —————————————————————————————————————————————

    二十、in_array — 检查数组中是否存在某个值(区分大小写)

    in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool
    大海捞针,在大海(haystack)中搜索针( needle),如果没有设置 strict 则使用宽松的比较。

    参数
    needle
    待搜索的值。
    Note:
    如果 needle 是字符串,则比较是区分大小写的。
    haystack
    待搜索的数组。
    strict
    如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。
    返回值
    如果找到 needle 则返回 TRUE,否则返回 FALSE。


    特殊例子 Example #3 in_array() 中用数组作为 needle

    <?php
    $a = array(array('p', 'h'), array('p', 'r'), 'o');
    
    if (in_array(array('p', 'h'), $a)) {
        echo "'ph' was found\n";
    }
    
    if (in_array(array('f', 'i'), $a)) {
        echo "'fi' was found\n";
    }
    
    if (in_array('o', $a)) {
        echo "'o' was found\n";
    }
    ?>
    

    以上例程会输出:

      'ph' was found
      'o' was found
    

    —————————————————————————————————————————————

    二十一、list — 把数组中的值赋给一组变量(不太明白)

    list ( mixed $var1 [, mixed $... ] ) : array

    array() 一样,这不是真正的函数,而是语言结构。 list() 可以在单次操作内就为一组变量赋值。

    Note:
    在 PHP 7.1.0 之前的版本,list() 仅能用于数字索引的数组,并假定数字索引从 0 开始。


    Warning PHP 5 里,list() 从最右边的参数开始赋值; PHP 7 里,list() 从最左边的参数开始赋值。
    如果你用单纯的变量,不用担心这一点。 但是如果你用了具有索引的数组,通常你期望得到的结果和在 list() 中写的一样是从左到右的,但在 PHP 5 里实际上不是, 它是以相反顺序赋值的。 通常而言,不建议依赖于操作的顺序,在未来可能会再次发生修改。

    Warning在 list() 执行过程中修改数组(比如使用 list($a, $b) = $b)将会产生不可预知的结果。

    —————————————————————————————————————————————

    二十二、natsort — 用“自然排序”算法对数组排序

    natsort ( array &$array ) : bool

     本函数实现了一个和人们通常对字母数字字符串进行排序的方法一样的排序算法并保持原有键/值的关联,这被称为“自然排序”。本算法和通常的计算机字符串排序算法(用于 sort())的区别见下面示例。
    Example #1 natsort() 基本用法的操作示例

    <?php
    $array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");
    
    asort($array1);
    echo "Standard sorting\n";
    print_r($array1);
    
    natsort($array2);
    echo "\nNatural order sorting\n";
    print_r($array2);
    ?>
    

    以上例程会输出:

    Standard sorting
    Array
    (
        [3] => img1.png
        [1] => img10.png
        [0] => img12.png
        [2] => img2.png
    )
    
    Natural order sorting
    Array
    (
        [3] => img1.png
        [2] => img2.png
        [1] => img10.png
        [0] => img12.png
    )
    

    Example #2 natsort() examples demonstrating potential gotchas(潜在的陷阱)

    <?php
    第一个是关于正负数的陷阱
    echo "Negative numbers\n";
    $negative = array('-5','3','-2','0','-1000','9','1');
    print_r($negative);
    natsort($negative);
    print_r($negative);
    
    第二个是关于前置零的陷阱
    echo "Zero padding\n";
    $zeros = array('09', '8', '10', '009', '011', '0'); 
    print_r($zeros);
    natsort($zeros);
    print_r($zeros);
    ?>
    

    以上例程会输出:

    Negative numbers
    Array
    (
        [0] => -5
        [1] => 3
        [2] => -2
        [3] => 0
        [4] => -1000
        [5] => 9
        [6] => 1
    )
    Array
    (
        [2] => -2
        [0] => -5
        [4] => -1000
        [3] => 0
        [6] => 1
        [1] => 3
        [5] => 9
    )
    
    Zero padding
    Array
    (
        [0] => 09
        [1] => 8
        [2] => 10
        [3] => 009
        [4] => 011
        [5] => 0
    )
    Array
    (
        [5] => 0
        [1] => 8
        [3] => 009
        [0] => 09
        [2] => 10
        [4] => 011
    )
    

    —————————————————————————————————————————————

    二十三、natcasesort — 用“自然排序”算法对数组进行不区分大小写字母的排序

    natcasesort ( array &$array ) : bool

    natcasesort() 是 natsort() 函数的不区分大小写字母的版本。
    本函数实现了一个和人们通常对字母数字字符串进行排序的方法一样的排序算法并保持原有键/值的关联,这被称为“自然排序”。


    排序方法还有:

    • strnatcmp() - 使用自然排序算法比较字符串(区分大小写)
    • strnatcasecmp() - 使用“自然顺序”算法比较字符串(不区分大小写)
      —————————————————————————————————————————————

    二十四、range — 根据范围创建数组,包含指定的元素

    range ( mixed $start , mixed $end [, number $step = 1 ] ) : array
    建立一个包含指定范围单元的数组。

    参数说明
    start
    序列的第一个值。
    end
    序列结束于 end 的值。
    step
    如果设置了步长 step,会被作为单元之间的步进值。step 应该为正值。不设置step 则默认为 1。


    Example #1 range() 例子

    <?php
    // array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
    foreach (range(0, 12) as $number) {
        echo $number;
    }
    
    //  step 参数
    // array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
    foreach (range(0, 100, 10) as $number) {
        echo $number;
    }
    
    // 字符序列的使用
    // array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i');
    foreach (range('a', 'i') as $letter) {
        echo $letter;
    }
    // array('c', 'b', 'a');
    foreach (range('c', 'a') as $letter) {
        echo $letter;
    }
    ?>
    

    —————————————————————————————————————————————

    相关文章

      网友评论

        本文标题:关于PHP的数组问题之函数

        本文链接:https://www.haomeiwen.com/subject/immhkqtx.html