美文网首页
PHP中的常用数组函数解析 -- PHP 学习 (十四)

PHP中的常用数组函数解析 -- PHP 学习 (十四)

作者: 无故下架内容so账号已弃用 | 来源:发表于2019-05-07 23:11 被阅读0次

    所有数组函数学习手册地址:
    https://www.php.net/manual/zh/ref.array.php

    贼多有没有, 好在很多还是很眼熟的.

    常用函数(个人认为常用):

    array_values, array_keys, array_push, array_pop, array_shift, array_unshift, array_merge, array_product, array_rand, array_sum, array_search, array_slice, array_splice, array_unique, count, in_array,array_reverse

    还有前面已经学习过的: range, compact, next, prev, current, end, reset, list, each, key

    记录部分函数的基础用法, 更多函数更多详细用法还得去查看上面的手册.

    • array_keys, array_values

    (1) array_keys — 返回数组中部分的或所有的键名

    (2) array_values — 返回数组中所有的值

    <?php
    header('content-type: text/html;charset=utf-8');
    
    $data = ['username'=>'guoyou.li','password'=>'12345476','sex'=>'男'];
    
    $keys = join(',',array_keys($data));
    $vals = "'".join("','",array_values($data))."'";
    
    $sql = "INSERT user({$keys}) INTO VALUES({$vals})";
    echo $sql;
    
    // INSERT user(username,password,sex) INTO VALUES('guoyou.li','12345476','男')
    
    

    • array_push, array_pop, array_shift, array_unshift

    (1) array_push — 将一个或多个单元压入数组的末尾(入栈),array 的长度将根据入栈变量的数目增加

    (2) array_pop — 弹出数组最后一个单元(出栈),并将数组 array 的长度减一。

    (3) array_shift() 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。

    (4) array_unshift — 在数组开头插入一个或多个单元
    用法: array_unshift ( array &$array [, mixed $... ] ) : int

    <?php
    header('content-type: text/html;charset=utf-8');
    
    $arr = ['a','b','c'];
    
    // 向数组的末尾插入新的元素
    array_push($arr,2,3,4,5,6,7);
    print_r($arr);
    /*
    Array
    (
        [0] => a
        [1] => b
        [2] => c
        [3] => 2
        [4] => 3
        [5] => 4
        [6] => 5
        [7] => 6
        [8] => 7
    )
    */
    
    // 向数组的前面插入新的元素
    array_unshift($arr,'A','B','C');
    print_r($arr);
    /*
    Array
    (
        [0] => A
        [1] => B
        [2] => C
        [3] => a
        [4] => b
        [5] => c
        [6] => 2
        [7] => 3
        [8] => 4
        [9] => 5
        [10] => 6
        [11] => 7
    )
    */
    
    // 删掉数组的第一个元素, 并返回
    $shift = array_shift($arr);
    echo $shift.'<br />'; // => A
    print_r($arr);
    /*
    Array
    (
        [0] => B
        [1] => C
        [2] => a
        [3] => b
        [4] => c
        [5] => 2
        [6] => 3
        [7] => 4
        [8] => 5
        [9] => 6
        [10] => 7
    )
    */
    
    // 删掉数组的最后一个元素, 并返回
    $pop = array_pop($arr);
    echo $pop.'<br />'; // => 7
    print_r($arr);
    /*
    Array
    (
        [0] => B
        [1] => C
        [2] => a
        [3] => b
        [4] => c
        [5] => 2
        [6] => 3
        [7] => 4
        [8] => 5
        [9] => 6
    )
    */
    

    • array_product, array_sum, count

    (1) array_product() 以整数或浮点数返回一个数组中所有值的乘积。

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

    (3) count — 计算数组中的单元数目,或对象中的属性个数

    <?php
    header('content-type: text/html;charset=utf-8');
    
    $arr = [3,4,34,3,6];
    
    // 求积
    $product = array_product($arr);
    echo $product,'<br/>'; // => 7344
    // 求和
    $sum = array_sum($arr);
    echo $sum,'<br />'; // => 50
    // 数组的个数
    $length = count($arr);
    echo $length; // => 5
    

    • in_array, array_merge, array_rand, array_search, array_reverse

    (1) in_array — 检查数组中是否存在某个值
    用法: in_array($needle, $haystack [, bool $strict = FALSE] ) : bool

    $arr = [3,4,34,3,6];
    
    var_dump(in_array(34, $arr)); // => bool(true)
    echo '<br />';
    var_dump(in_array('34', $arr)); // => bool(true)
    echo '<br />';
    // 检验类型
    var_dump(in_array('34', $arr, true)); // => bool(false)
    echo '<br />';
    var_dump(in_array('666', $arr)); // => bool(false)
    echo '<br />';
    

    (2) array_merge — 合并一个或多个数组
    用法: array_merge ( array $array1 [, array $... ] ) : array

    $a = [3,4,34,3,6];
    $b = ['a','b'];
    
    // 合并数组
    $c = array_merge($a, $b);
    
    print_r($a);
    /*
    // $a
    Array
    (
        [0] => 3
        [1] => 4
        [2] => 34
        [3] => 3
        [4] => 6
    )
    */
    print_r($b);
    /*
     * $b
    Array
    (
        [0] => a
        [1] => b
    )
    */
    print_r($c);
    /*
    // $c
    Array
    (
        [0] => 3
        [1] => 4
        [2] => 34
        [3] => 3
        [4] => 6
        [5] => a
        [6] => b
    )
    */
    

    (3) array_rand — 从数组中随机取出一个或多个单元
    用法: array_rand ( array $array [, int $num = 1 ] )

    如果只取出一个,array_rand() 返回随机单元的键名。 否则就返回包含随机键名的数组

    $arr = ['a','b','guoyou','hahahhahaha'];
    
    $result = array_rand($arr);
    echo $result; // => 3
    echo '<br />';
    echo $arr[$result]; // => hahahhahaha
    echo '<br />';
    
    $results = array_rand($arr, 2);
    print_r($results); // => Array ( [0] => 2 [1] => 3 )
    

    (4) array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名
    用法: array_search ($needle , $haystack [, bool $strict = false ] )

    $arr = ['a','b','guoyou','hahahhahaha', '34'];
    
    echo array_search(34, $arr); // => 4
    echo '<br />';
    echo array_search('34', $arr); // => 4
    echo '<br />';
    var_dump(array_search(34, $arr, true)); // => bool(false)
    

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

    $arr = ['a','b','guoyou','hahahhahaha', '34'];
    
    // 反转数组
    $result = array_reverse($arr);
    print_r($result);
    /*
    Array
    (
        [0] => 34
        [1] => hahahhahaha
        [2] => guoyou
        [3] => b
        [4] => a
    )
    */
    

    • array_slice, array_splice, array_unique

    (1) array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
    用法: array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] ) : array

    a. 如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。

    b. 如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。

    c. 注意 array_slice() 默认会重新排序并重置数组的数字索引。你可以通过将 preserve_keys 设为 TRUE 来改变此行为。

    <?php
    header('content-type: text/html;charset=utf-8');
    
    $arr = ['a','b','guoyou','hahahhahaha', '34'];
    
    // 从下标3之后开始截取数组, 并返回
    $slice = array_slice($arr, 3);
    print_r($slice);
    /*
    Array
    (
        [0] => hahahhahaha
        [1] => 34
    )
    */
    
    // 从倒数第四个开始截取长度为1的数组,并返回
    $a = array_slice($arr, -4, 1);
    print_r($a);
    /*
    Array
    (
        [0] => b
    )
    */
    
    // 从倒数第四个开始截取长度为1的数组,并返回, 且不改变原来的索引下标
    $a = array_slice($arr, -4, 1, true);
    print_r($a);
    /*
    Array
    (
        [1] => b
    )
    */
    

    (2) array_splice — 去掉数组中的某一部分并用其它值取代,
    用法: array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] ) : array

    $arr = ['a','b','guoyou','hahahhahaha', '34'];
    
    //  把下标 3,4 的元素替换成新插入的项
    array_splice($arr, 3, 2, 'new');
    
    print_r($arr); // => Array ( [0] => a [1] => b [2] => guoyou [3] => new )
    
    // 在下标3的后面插入新的元素
    array_splice($arr, 3, 0, 'add');
    
    print_r($arr); // => Array ( [0] => a [1] => b [2] => guoyou [3] => add [4] => new )
    

    (3) array_unique — 移除数组中重复的值
    用法: array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) : array

    $arr = ['1','2',1, 2, 1, 34, '34'];
    
    $newArr = array_unique($arr);
    
    print_r($arr);
    /*
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 1
        [3] => 2
        [4] => 1
        [5] => 34
        [6] => 34
    )
    */
    print_r($newArr);
    /*
    Array
    (
        [0] => 1
        [1] => 2
        [5] => 34
    )
    */
    

    相关文章

      网友评论

          本文标题:PHP中的常用数组函数解析 -- PHP 学习 (十四)

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