• PHP 数组


    数组去重

    $bb=array_unique($aa);

    去重后键还是保留原来的,如果要重置键需要array_values处理

    $arr=array_values($arr);

    这样就会重新排列键


    in_array($str,$arr);

    判断$str是否在数组$arr中,返回值为TRUE或者FALSE


    往数组中追加元素

    array_push($arr,$str);

    把$str追加到数组$arr中


    数组重新随机排序

    shuffle($arr);


    分割数组

    array_slice($arr,'开始位置','个数')


     二维数组转一维数组

    array_column($arr,'字段')  


    获取数组value的key的值

    array_keys($arr,$value)


     以相反的顺序返回数组

    array_reverse

    语法array_reverse(array,preserve)

    第二个参数可选:默认false,规定是否保留原始数组的键名;true为保留

    $a=array("a"=>"Volvo","b"=>"BMW","c"=>"Toyota");
    array_reverse($a)

    //结果Array ( [c] => Toyota [b] => BMW [a] => Volvo )


    array_pop — 将数组最后一个单元弹出(出栈)

    $stack = array("orange", "banana", "apple", "raspberry");
    $fruit = array_pop($stack);
    print_r($stack);
    result:
    Array
    (
        [0] => orange
        [1] => banana
        [2] => apple
    )

    与之对应的array_push函数将一个或多个单元压入数组的末尾(入栈) 

    $stack = array("orange", "banana");
    array_push($stack, "apple", "raspberry");
    print_r($stack);
    
    result:
    Array
    (
        [0] => orange
        [1] => banana
        [2] => apple
        [3] => raspberry
    )

    array_shift() 将 array 的第一个单元移出

    $stack = array("orange", "banana", "apple", "raspberry");
    $fruit = array_shift($stack);
    print_r($stack);
    
    result:
    Array
    (
        [0] => banana
        [1] => apple
        [2] => raspberry
    )

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

    $queue = array("orange", "banana");
    array_unshift($queue, "apple", "raspberry");
    
    result:
    Array
    (
        [0] => apple
        [1] => raspberry
        [2] => orange
        [3] => banana
    )

    数组中删除元素

    $arr = array('a','b','c','d');  
    unset($arr[1]);  
    print_r($arr); 

    print_r($arr)之后,结果却不是那样的,最终结果是 Array ( [0] => a [2] => c [3] => d );

    unset索引未改变

    array_splice()移除元素后重新索引

    那么怎么才能做到缺少的元素会被填补并且数组会被重新索引呢?答案是array_splice()

    $arr = array('a','b','c','d');  
    array_splice($arr,1,1);  
    print_r($arr); 

    print_r($arr)之后,结果是Array ( [0] => a [1] => c [2] => d )

    array_map — 将回调函数作用到给定数组的单元上

    function cube($n)
    {
        return($n * $n * $n);
    }
     
    $a = array(1, 2, 3, 4, 5);
    $b = array_map("cube", $a);
    print_r($b);
    
    result:
    Array
    (
        [0] => 1
        [1] => 8
        [2] => 27
        [3] => 64
        [4] => 125
    )

     array_count_values()  统计数组中所有值出现的次数

    $arr     = array(1,3,2,3,2,4);
    $sortArr = array_count_values($arr);
    var_dump($sortArr);
    
    result:
    array (size=4)
      1 => int 1
      3 => int 2
      2 => int 2
      4 => int 1

    顺便可以用sort()函数进行排序,可以从高到底统计出现次数最多的字符,再用key($sortArr)获取次数最多的key,用reset($sortArr)获取次数最多的值

    完整的例子:

    $test = 'djasflkj2l3fjosadf,a.,gdflgk';
    $testArr = str_split($test); //分割字符串
    $sortArr = array_count_values($testArr);//统计数组中所有值出现的次数
    arsort($sortArr); 
    printf("最多的字符:%s,次数:%d",key($sortArr),reset($sortArr));

    array_keys()  返回数组中所有的键名

    array array_keys ( array $input [, mixed $search_value [, bool $strict ]] )
    array_keys() 返回 input 数组中的数字或者字符串的键名。

    举例

    $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_change_key_case()函数将数组的所有的键都转换为大写字母或小写字母。

    如果在运行该函数时两个或多个键相同,则最后的元素会覆盖其他元素

    array_change_key_case(array,case);
    参数描述
    array 必需。规定要使用的数组。
    case

    可选。可能的值:

    • CASE_LOWER - 默认值。将数组的键转换为小写字母。
    • CASE_UPPER - 将数组的键转换为大写字母。

    array_flip() 

    数组键值对调位置

  • 相关阅读:
    基本sql查询语句练习
    SZU:J38 Number Base Conversion
    SZU:B54 Dual Palindromes
    SZU:A66 Plastic Digits
    HOJ:2031 进制转换
    SZU:G34 Love code
    SZU:A25 Favorite Number
    Vijos:P1001谁拿了最多奖学金
    SZU:A26 Anagram
    SZU:A12 Jumping up and down
  • 原文地址:https://www.cnblogs.com/blueskycc/p/4671789.html
Copyright © 2020-2023  润新知