1. 程式人生 > >PHP處理陣列常用函式和使用案例(PHP Array)

PHP處理陣列常用函式和使用案例(PHP Array)

PHP Array簡介,陣列函式允許您訪問和運算元組。支援單維和多維陣列。安裝 陣列函式屬於 PHP 核心部分。無需安裝即可使用這些函式。

array_search — 在陣列中搜索給定的值,如果成功則返回相應的鍵名

<?php
  $array  = array( 0  =>  'blue' ,  1  =>  'red' ,  2  =>  'green' ,  3  =>  'red' );

  $key  =  array_search ( 'green' ,  $array );  // $key = 2;
  $key  =  array_search ( 'red' ,  $array );    // $key = 1;
?>

array_key_exists()在給定的 key 存在於陣列中時返回 TRUE

<?php
   $search_array  = array( 'first'  =>  null ,  'second'  =>  4 );

   // returns true
   array_key_exists ( 'first' ,  $search_array );
?>

isset — 檢測變數是否設定 

如果已經使用 unset()  釋放了一個變數之後,它將不再是 isset() 。若使用 isset()  測試一個被設定成 NULL  的變數,將返回 FALSE 。同時要注意的是一個 NULL  位元組("\0")並不等同於 PHP 的 NULL  常數。 

 <?php
    $var  =  '' ;
     // 結果為 TRUE,所以後邊的文字將被打印出來。
     if (isset( $var )) {
        echo  "This var is set so I will print." ;
    }
     // 在後邊的例子中,我們將使用 var_dump 輸出 isset() 的返回值。
    // the return value of isset().
     $a  =  "test" ;
     $b  =  "anothertest" ;
     var_dump (isset( $a ));       // TRUE
     var_dump (isset( $a ,  $b ));  // TRUE

     unset ( $a );
     var_dump (isset( $a ));      // FALSE
     var_dump (isset( $a ,  $b ));  // FALSE
     $foo  =  NULL ;
     var_dump (isset( $foo ));    // FALSE
 ?>

array_pop — 將陣列最後一個單元彈出(出棧)

array_pop()  彈出並返回 array 陣列的最後一個單元,並將陣列 array 的長度減一。如果 array 為空(或者不是陣列)將返回 NULL 。

<?php
   $stack  = array( "orange" ,  "banana" ,  "apple" ,  "raspberry" );
   $fruit  =  array_pop ( $stack );

   print_r ( $stack );  // Array([0] => orange,[1] => banana,[2] => apple)
?>

array_push — 將一個或多個單元壓入陣列的末尾(入棧)

array_push()  將 array 當成一個棧,並將傳入的變數壓入 array 的末尾。array 的長度將根據入棧變數的數目增加。

<?php
   $stack  = array( "orange" ,  "banana" );
   array_push ( $stack ,  "apple" ,  "raspberry" );

   print_r ( $stack );  // Array([0] => orange,[1] => banana,[2] => apple,[3] => raspberry)
?>

array_unshift — 在陣列開頭插入一個或多個單元

array_unshift()  將傳入的單元插入到 array 陣列的開頭。注意單元是作為整體被插入的,因此傳入單元將保持同樣的順序。所有的數值鍵名將修改為從零開始重新計數,所有的文字鍵名保持不變。 

<?php
  $queue  = array( "orange" ,  "banana" );
  array_unshift ( $queue ,  "apple" ,  "raspberry" );

  print_r ( $queue ); //Array([0] => apple,[1] => raspberry,[2] => orange,[3] => banana)
?>

array_shift — 將陣列開頭的單元移出陣列 

array_shift()  將array 的第一個單元移出並作為結果返回,將 array 的長度減一併將所有其它單元向前移動一位。所有的數字鍵名將改為從零開始計數,文字鍵名將不變。

<?php
  $stack  = array( "orange" ,  "banana" ,  "apple" ,  "raspberry" );
  $fruit  =  array_shift ( $stack );

  print_r ( $stack ); // Array([0] => banana,[1] => apple,[2] => raspberry)
?>

array_replace — 使用傳遞的陣列替換第一個陣列的元素 

array_replace()  函式使用後面陣列元素的值替換第一個 array 陣列的值。如果一個鍵存在於第一個陣列同時也存在於第二個陣列,它的值將被第二個陣列中的值替換。如果一個鍵存在於第二個陣列,但是不存在於第一個陣列,則會在第一個陣列中建立這個元素。如果一個鍵僅存在於第一個陣列,它將保持不變。如果傳遞了多個替換陣列,它們將被按順序依次處理,後面的陣列將覆蓋之前的值。 

<?php
    $base  = array( "orange" ,  "banana" ,  "apple" ,  "raspberry" );
     $replacements  = array( 0  =>  "pineapple" ,  4  =>  "cherry" );
     $replacements2  = array( 0  =>  "grape" );

     $basket  =  array_replace ( $base ,  $replacements ,  $replacements2 );
     print_r ( $basket ); // Array([0] => grape,[1] => banana,[2] => apple,[3] => raspberry,[4] => cherry)
?>

array_sum — 計算陣列中所有值的和 

array_sum()  將陣列中的所有值的和以整數或浮點數的結果返回。

<?php
  $b  = array( "a"  =>  1.2 ,  "b"  =>  2.3 ,  "c"  =>  3.4 );

  echo  "sum= "  .  array_sum ( $b ); // sum = 6.9
?>

array_unique — 移除陣列中重複的值

array_unique()  接受 array 作為輸入並返回沒有重複值的新陣列。注意鍵名保留不變。 array_unique()  先將值作為字串排序,然後對每個值只保留第一個遇到的鍵名,接著忽略所有後面的鍵名。這並不意味著在未排序的 array 中同一個值的第一個出現的鍵名會被保留。 

<?php
   $input  = array( "a"  =>  "green" ,  "red" ,  "b"  =>  "green" ,  "blue" ,  "red" );
   $result  =  array_unique ( $input );
   print_r ( $result );  // Array([a] => green,[0] => red,[1] => blue)
?>

in_array — 檢查陣列中是否存在某個值 

如果找到指定的值則返回 TRUE,否則返回 FALSE 。in_array()是區分大小寫的。

<?php
  $os  = array( "Mac" ,  "NT" ,  "Irix" ,  "Linux" );
  if ( in_array ( "Irix" ,  $os )) {
    echo  "Got Irix" ;
  }
  if ( in_array ( "mac" ,  $os )) {
    echo  "Got mac" ;
  }
  // 第二個條件失敗,因為 in_array()  是區分大小寫的,所以以上程式顯示為: Got Irix

?>

key — 從關聯陣列中取得鍵名

key()  函式返回陣列中內部指標指向的當前單元的鍵名。但它不會移動指標。如果內部指標超過了元素列表尾部,或者陣列是空的,key() 會返回 NULL 。

<?php
    $array  = array(
      'fruit1'  =>  'apple' ,
      'fruit2'  =>  'orange' 
    );
    while ( $fruit_name  =  current ( $array )) {//current() 函式返回陣列中的當前元素的值。
      if ( $fruit_name  ==  'apple' ) {
         echo  key ( $array ). '<br />' ;
      }
     next ( $array );  // fruit1
   }
?>

current() 函式返回陣列中的當前元素的值。

每個陣列中都有一個內部的指標指向它的"當前"元素,初始指向插入到陣列中的第一個元素。

提示:該函式不會移動陣列內部指標。

相關的方法:

  • end() - 將內部指標指向陣列中的最後一個元素,並輸出。
  • next() - 將內部指標指向陣列中的下一個元素,並輸出。
  • prev() - 將內部指標指向陣列中的上一個元素,並輸出。
  • reset() - 將內部指標指向陣列中的第一個元素,並輸出。
  • each() - 返回當前元素的鍵名和鍵值,並將內部指標向前移動。
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "<br>"; // The current element is Peter
echo next($people) . "<br>"; // The next element of Peter is Joe
echo current($people) . "<br>"; // Now the current element is Joe
echo prev($people) . "<br>"; // The previous element of Joe is Peter
echo end($people) . "<br>"; // The last element is Cleveland
echo prev($people) . "<br>"; // The previous element of Cleveland is Glenn
echo current($people) . "<br>"; // Now the current element is Glenn
echo reset($people) . "<br>"; // Moves the internal pointer to the first element of the array, which is Peter
echo next($people) . "<br>"; // The next element of Peter is Joe

print_r (each($people)); // Returns the key and value of the current element (now Joe), and moves the internal pointer forward
?>

 

krsort — 對陣列按照鍵名逆向排序

對陣列按照鍵名逆向排序,保留鍵名到資料的關聯。主要用於結合陣列。成功時返回 TRUE ,或者在失敗時返回 FALSE 。

<?php
    $fruits  = array( "d" => "lemon" ,  "a" => "orange" ,  "b" => "banana" ,  "c" => "apple" );
     krsort ( $fruits );
    foreach ( $fruits  as  $key  =>  $val ) {
        echo  " $key  =  $val " ;  // d = lemon,c = apple,b = banana,a = orange
    }
?>

ksort — 對陣列按照鍵名排序 

對陣列按照鍵名排序,保留鍵名到資料的關聯。本函式主要用於關聯陣列。成功時返回 TRUE ,或者在失敗時返回 FALSE 。

<?php
    $fruits  = array( "d" => "lemon" ,  "a" => "orange" ,  "b" => "banana" ,  "c" => "apple" );
     ksort ( $fruits );
    foreach ( $fruits  as  $key  =>  $val ) {
        echo  " $key  =  $val" ;  // a = orange,b = banana,c = apple,d = lemon
    }
?>

rsort — 對陣列逆向排序

rsort對陣列進行逆向排序(最高到最低)。成功時返回 TRUE ,或者在失敗時返回 FALSE 。

<?php
    $fruits  = array( "lemon" ,  "orange" ,  "banana" ,  "apple" );
     rsort ( $fruits );
    foreach ( $fruits  as  $key  =>  $val ) {
        echo  " $key  =  $val " ; //  0 = orange,1 = lemon,2 = banana,3 = apple  $fruits 被按照字母順序逆向排序。
    }
?>

sort — 對陣列排序,從最低到最高重新安排。

<?php
    $fruits  = array( "lemon" ,  "orange" ,  "banana" ,  "apple" );
    sort ( $fruits );
    foreach ( $fruits  as  $key  =>  $val ) {
    echo  "fruits["  .  $key  .  "] = "  .  $val; 
    
    以上例程會輸出:
        fruits[0] = apple
        fruits[1] = banana
        fruits[2] = lemon
        fruits[3] = orange 
    }
?>

natcasesort — 用“自然排序”演算法對陣列進行不區分大小寫字母的排序

natcasesort()  是 natsort()  函式的不區分大小寫字母的版本。

本函式實現了一個和人們通常對字母數字字串進行排序的方法一樣的排序演算法並保持原有鍵/值的關聯,這被稱為“自然排序”。

<?php
     $array1  =  $array2  = array( 'IMG0.png' ,  'img12.png' ,  'img10.png' ,  'img2.png' ,  'img1.png' ,  'IMG3.png' );
     
     natcasesort ( $array2 );
     print_r ( $array2 ); // Array([0] => IMG0.png,[4] => img1.png,[3] => img2.png,[5] => IMG3.png,[2] => img10.png,[1] => img12.png)
?>

natsort — 用“自然排序”演算法對陣列排序

本函式實現了一個和人們通常對字母數字字串進行排序的方法一樣的排序演算法並保持原有鍵/值的關聯,這被稱為“自然排序”。本演算法和通常的計算機字串排序演算法(用於 sort() )的區別見下面示例。

<?php
    $array1  =  $array2  = array( "img12.png" ,  "img10.png" ,  "img2.png" ,  "img1.png" );
    natsort ( $array2 );

    print_r ( $array2 ); 
    以上例程會輸出:
        Array(
            [3] => img1.png
            [2] => img2.png
            [1] => img10.png
            [0] => img12.png
        )
 ?>

 

shuffle — 將陣列打亂,本函式打亂(隨機排列單元的順序)一個數組。

PHP array 是允許對陣列操作的函式。PHP 支援單維和多維的陣列。同時提供了用資料庫查詢結果來構造陣列的函式。

 

出處:小張個人部落格

網址:http://www.023xs.cn/

 

參考連結:https://blog.csdn.net/ouyangxiaoguai/article/details/50340083

參考連結:https://blog.csdn.net/qq_16241043/article/details/53436965