>  기사  >  백엔드 개발  >  안드로이드 프로그래머가 배우는 PHP 개발(25) - 배열 연산 관련 기능(3) 분해 및 정리 - PhpStorm

안드로이드 프로그래머가 배우는 PHP 개발(25) - 배열 연산 관련 기능(3) 분해 및 정리 - PhpStorm

黄舟
黄舟원래의
2017-03-03 09:50:461081검색

이 세 블로그 게시물에서는 일반적으로 사용되는 거의 모든 배열 함수를 보여줍니다. PHP 개발에서는 대부분의 시간이 문자열 및 배열 연산에 소비되므로 관련 함수가 더 중요합니다.

http://php.net/manual/zh/ref.array.php

버블 정렬
array_slice() 배열에서 세그먼트를 가져옵니다
array_splice()는 배열의 일부를 제거하고 이를 다른 값으로 바꿉니다
array_combine()은 한 배열의 값을 키 이름으로 사용하고 다른 배열의 값을 값으로 사용하여 배열을 만듭니다

배열 추가 및 배열 병합
array_merge() 하나 이상의 배열 병합

교집합과 차이
array_intersect() 배열의 교집합 계산
array_diff() 배열의 차이 계산

푸시 및 팝
array_push() 하나 이상의 셀을 배열의 끝으로 푸시(push)
array_pop() 배열의 마지막 셀 팝(팝)


array_unshift() 배열 시작 부분에 하나 이상의 셀 삽입(인큐)
array_shift() 배열 시작 부분의 셀을 배열 밖으로

무작위
array_rand 이동 () 배열에서 하나 이상의 유닛을 무작위로 꺼냅니다(무작위)

Shuffle
shuffle() 배열을 섞습니다

Sum
array_sum() 모든 값의 합을 계산합니다. ​​배열에 (Sum)

range() 지정된 셀 범위를 포함하는 배열을 생성합니다
array_fill() 주어진 값으로 배열을 채웁니다

<?php
    /**
     * 冒泡排序
     *
     * array_slice() 从数组中取出一段
     * array_splice() 把数组中的一部分去掉并用其它值取代
     * array_combine() 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
     *
     * 数组相加 与 数组合并
     * array_merge() 合并一个或多个数组
     *
     * 交集 与 差集
     * array_intersect() 计算数组的交集
     * array_diff() 计算数组的差集
     *
     * 入栈 与 出栈
     * array_push() 将一个或多个单元压入数组的末尾(入栈)
     * array_pop() 将数组最后一个单元弹出(出栈)
     *
     * 队列
     * array_unshift() 在数组开头插入一个或多个单元(入队)
     * array_shift() 将数组开头的单元移出数组
     *
     * 随机
     * array_rand() 从数组中随机取出一个或多个单元(随机)
     *
     * 打乱
     * shuffle() 将数组打乱
     *
     * 求和
     * array_sum() 计算数组中所有值的和(求和)
     *
     * range()  建立一个包含指定范围单元的数组
     * array_fill()  用给定的值填充数组
     */

    /**
     * 冒泡排序
     */
    echo &#39;---------- 冒泡排序 从小到大 ----------<br>&#39;;
    $arr = array(9,8,7,6,5,4,3,2,1,0);
    $tmp;
    for($i=0;$i<count($arr)-1;$i++ ){
        for($j=0;$j<count($arr)-1-$i;$j++){
            if($arr[$j] > $arr[$j+1]){
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j+1];
                $arr[$j+1] = $tmp;
            }
        }
    }
    print_r($arr); // Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 )
    echo &#39;<br>&#39;;

    echo &#39;---------- 冒泡排序 从大到小 ----------<br>&#39;;
    $arr = array(0,1,2,3,4,5,6,7,8,9);
    $tmp;
    for($i=0;$i<count($arr)-1;$i++ ){
        for($j=0;$j<count($arr)-1-$i;$j++){
            if($arr[$j+1] > $arr[$j]){
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j+1];
                $arr[$j+1] = $tmp;
            }
        }
    }
    print_r($arr); // Array ( [0] => 9 [1] => 8 [2] => 7 [3] => 6 [4] => 5 [5] => 4 [6] => 3 [7] => 2 [8] => 1 [9] => 0 )
    echo &#39;<br>&#39;;

    /**
     * array_slice() 从数组中取出一段
     */
    echo &#39;---------- array_slice() ----------<br>&#39;;
    $arr2 = array("a", "b", "c", "d", "e");
    $arr2n = array_slice($arr2, 2, 2); // 从下标2开始,取出2个元素
    print_r($arr2n); // Array ( [0] => c [1] => d )
    echo &#39;<br>&#39;;

    $arr2n2 = array_slice($arr2, -2, 2); // 从(最大下标-2)开始,取出2个元素
    print_r($arr2n2); // Array ( [0] => d [1] => e )
    echo &#39;<br>&#39;;

    /**
     * array_splice() 把数组中的一部分去掉并用其它值取代
     */
    echo &#39;---------- array_splice() ----------<br>&#39;;
    $arr2 = array("a", "b", "c", "d", "e");
    array_splice($arr2, 2); // 从下标2开始,去掉后面所有元素
    print_r($arr2); // Array ( [0] => a [1] => b )
    echo &#39;<br>&#39;;

    $arr2 = array("a", "b", "c", "d", "e");
    array_splice($arr2, -3, 2); // 从(最大下标-3)开始,去掉2个元素
    print_r($arr2); // Array ( [0] => a [1] => b [2] => e )
    echo &#39;<br>&#39;;

    $arr2 = array("a", "b", "c", "d", "e");
    array_splice($arr2, -3, 2, "hello"); // 从(最大下标-3)开始,去掉2个元素。从去掉的下标开始添加新元素
    print_r($arr2); // Array ( [0] => a [1] => b [2] => hello [3] => e )
    echo &#39;<br>&#39;;

    $arr2 = array("a", "b", "c", "d", "e");
    array_splice($arr2, -3, 2, array("hello", "world", "android")); // 从(最大下标-3)开始,去掉2个元素。从去掉的下标开始添加新元素
    print_r($arr2); // Array ( [0] => a [1] => b [2] => hello [3] => world [4] => android [5] => e )
    echo &#39;<br>&#39;;

    /**
     * array_combine() 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
     */
    echo &#39;---------- array_combine() ----------<br>&#39;;
    $arrA = array("os", "webserver", "db", "language");
    $arrB = array("linux", "apache", "mysql", "php");
    $arrC = array_combine($arrA,$arrB);
    print_r($arrC); // Array ( [os] => linux [webserver] => apache [db] => mysql [language] => php )
    echo &#39;<br>&#39;;

    /**
     * 数组相加
     * 相加时,下标相同时,$arrA的元素会覆盖$arrB的元素
     */
    echo &#39;---------- 数组相加 ----------<br>&#39;;
    $arrA = array("os", "webserver", "db", "language");
    $arrB = array("linux", "apache", "mysql", "php");
    $arrC = $arrA + $arrB;
    print_r($arrC); // Array ( [0] => os [1] => webserver [2] => db [3] => language )
    echo &#39;<br>&#39;;

    $arrA = array("os", "webserver", "db", "language");
    $arrB = array(9=>"linux", "apache", "mysql", "php");
    $arrC = $arrA + $arrB;
    print_r($arrC); // Array ( [0] => os [1] => webserver [2] => db [3] => language [9] => linux [10] => apache [11] => mysql [12] => php )
    echo &#39;<br>&#39;;

    /**
     * 数组合并
     * array_merge() 合并一个或多个数组
     * 如果下标是字符串,也就是说关联数组,下标相同时,$arrB的元素会覆盖$arrA的元素
     */
    echo &#39;---------- array_merge() 数组合并 ----------<br>&#39;;
    $arrA = array("os", "webserver", "db", "language");
    $arrB = array("linux", "apache", "mysql", "php");
    $arrC = array_merge($arrA, $arrB);
    print_r($arrC); // Array ( [0] => os [1] => webserver [2] => db [3] => language [4] => linux [5] => apache [6] => mysql [7] => php )
    echo &#39;<br>&#39;;

    $arrA = array("os", "two"=>"webserver", "db", "language");
    $arrB = array("linux", "two"=>"apache", "mysql", "php");
    $arrC = array_merge($arrA, $arrB);
    print_r($arrC); // Array ( [0] => os [two] => apache [1] => db [2] => language [3] => linux [4] => mysql [5] => php )
    echo &#39;<br>&#39;;

    /**
     * array_intersect() 计算数组的交集
     */
    echo &#39;---------- array_intersect() 交集 ----------<br>&#39;;
    $arrA = array("os", "www", "db", "linux");
    $arrB = array("linux", "apache", "mysql", "www");
    $arrC = array_intersect($arrA, $arrB);
    print_r($arrC); // Array ( [1] => www [3] => linux )
    echo &#39;<br>&#39;;

    /**
     * array_diff() 计算数组的差集
     */
    echo &#39;---------- array_diff() 差集 ----------<br>&#39;;
    $arrA = array("os", "www", "db", "linux");
    $arrB = array("linux", "apache", "mysql", "www");
    $arrC = array_diff($arrA, $arrB);
    print_r($arrC); // Array ( [0] => os [2] => db )
    echo &#39;<br>&#39;;

    /**
     * array_push() 将一个或多个单元压入数组的末尾(入栈)
     */
    echo &#39;---------- array_push() 入栈 ----------<br>&#39;;
    $arrZhan = array();
    array_push($arrZhan,"one");
    print_r($arrZhan); // Array ( [0] => one )
    echo &#39;<br>&#39;;
    array_push($arrZhan,"two");
    array_push($arrZhan,"three");
    print_r($arrZhan); // Array ( [0] => one [1] => two [2] => three )
    echo &#39;<br>&#39;;
    array_push($arrZhan,"four","five");
    print_r($arrZhan); // Array ( [0] => one [1] => two [2] => three [3] => four [4] => five )
    echo &#39;<br>&#39;;

    /**
     * array_pop() 将数组最后一个单元弹出(出栈)
     */
    echo &#39;---------- array_pop() 出栈 ----------<br>&#39;;
    array_pop($arrZhan);
    print_r($arrZhan); // Array ( [0] => one [1] => two [2] => three [3] => four )
    echo &#39;<br>&#39;;

    echo array_pop($arrZhan); // four
    echo &#39;<br>&#39;;
    print_r($arrZhan); // Array ( [0] => one [1] => two [2] => three )
    echo &#39;<br>&#39;;

    /**
     * array_unshift() 在数组开头插入一个或多个单元(入队)
     */
    echo &#39;---------- array_unshift() 入队 ----------<br>&#39;;
    $arrDuilie = array();
    array_unshift($arrDuilie, "one");
    array_unshift($arrDuilie, "two");
    array_unshift($arrDuilie, "three");
    array_unshift($arrDuilie, "four");
    print_r($arrDuilie);
    echo &#39;<br>&#39;; // Array ( [0] => four [1] => three [2] => two [3] => one )

    /**
     * array_shift() 将数组开头的单元移出数组(出队)
     */
    echo &#39;---------- array_shift() 出队 ----------<br>&#39;;
    array_shift($arrDuilie);
    print_r($arrDuilie);
    echo &#39;<br>&#39;; // Array ( [0] => three [1] => two [2] => one )

    echo array_shift($arrDuilie); // three
    echo &#39;<br>&#39;;
    print_r($arrDuilie); // Array ( [0] => two [1] => one )
    echo &#39;<br>&#39;;

    /**
     * array_rand() 从数组中随机取出一个或多个单元(随机)
     */
    echo &#39;---------- array_rand() 随机 ----------<br>&#39;;
    $arrZ = array("a", "b", "c", "d", "e");
    var_dump(array_rand($arrZ)); // int(1)
    echo &#39;<br>&#39;;
    var_dump(array_rand($arrZ,3)); // array(3) { [0]=> int(0) [1]=> int(1) [2]=> int(3) }
    echo &#39;<br>&#39;;

    $randValue = array_rand($arrZ);
    $result = is_string($randValue); // 判断$randValue是不是字符串
    var_dump($result); // bool(false)
    echo &#39;<br>&#39;;

    /**
     * shuffle() 将数组打乱
     */
    echo &#39;---------- shuffle() 打乱 ----------<br>&#39;;
    $arrZ = array("a", "b", "c", "d", "e");
    shuffle($arrZ);
    print_r($arrZ); //Array ( [0] => c [1] => b [2] => d [3] => e [4] => a )
    echo &#39;<br>&#39;;

    /**
     * array_sum() 计算数组中所有值的和(求和)
     */
    echo &#39;---------- array_sum() 求和 ----------<br>&#39;;
    $arrH = array(1,2,3,4,5,6,7,8,9);
    echo array_sum($arrH); // 45
    echo &#39;<br>&#39;;

    /**
     * range()  建立一个包含指定范围单元的数组
     */
    echo &#39;---------- range() 求和 ----------<br>&#39;;
    $arrR = range(0,10);
    print_r($arrR); // Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 [10] => 10 )
    echo &#39;<br>&#39;;

    $arrR = range(0,10,3); // 第三个参数表示步进(跳步)
    print_r($arrR); // Array ( [0] => 0 [1] => 3 [2] => 6 [3] => 9 )
    echo &#39;<br>&#39;;

    /**
     * array_fill()  用给定的值填充数组
     */
    echo &#39;---------- array_fill() 求和 ----------<br>&#39;;
    $arrF = array_fill(0,5,"iwanghang");
    print_r($arrF); // Array ( [0] => iwanghang [1] => iwanghang [2] => iwanghang [3] => iwanghang [4] => iwanghang )
    echo &#39;<br>&#39;;

위의 방법은 안드로이드 프로그래머가 배우는 PHP 개발( 25) - 배열 연산 관련 기능 (3) 분해 및 정리 - PhpStorm 내용, 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.