天天看點

數組函數 array_column

數組函數 array_column

内容目錄

array_column 函數簡介傳入一個參數,傳回二維數組中指定列傳入一個參數,指定列不一定存在的情況傳入兩個參數,且兩個參數對應的列都存在且不重複如果第二個參數對應的列的資料有重複的情況如果對應鍵或者值的列資料不一定存在情況總結

array_column 函數簡介

array_column() 傳回input數組中鍵值為column_key的列, 如果指定了可選參數index_key,那麼input數組中的這一列的值将作為傳回數組中對應值的鍵。

這是php.net中對該函數的說明。說的很明白卻有那麼的暈。還是先看看不同情況下的輸出結果吧。一下所有的執行個體都以相同的數組$data輸入為參考,輸入如下。

$data = [
 ['id'=>1,'name'=>'A','city'=>'Beijin','like'=>'Red','info'=>''],
 ['id'=>2,'name'=>'B','city'=>'Shanghai','age'=>20,'info'=>'defualt'],
 ['id'=>2,'name'=>'C','city'=>'Guangdong','age'=>'30','info'=>'empty']
];
           

複制

傳入一個參數,傳回二維數組中指定列

$d1 = array_column($data,'id');
print_r($d1);
           

複制

輸出内容是:

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

複制

當輸入參數隻有一個參數,且指定列都存在的情況下,array_column 函數的左右是取出二維數組的這一列的資料。

傳入一個參數,指定列不一定存在的情況

程式中,資料的結構不統一最容易導緻bug的出現,是以需要驗證在指定列資料缺失部分的情況函數的傳回結果。原始資料age在第一個子數組中是不存在的。

$d2 = array_column($data,'age');
print_r($d2);
           

複制

對于以上的内容輸出結果如下:

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

複制

這中情況,會不不存該列的資料丢棄掉,傳回數組的個數相比原來的資料減少了!!!是以,當傳入一個參數,所指定的列不存在的情況,array_column将傳回一個空數組。

傳入兩個參數,且兩個參數對應的列都存在且不重複

$d1 = array_column($data,'id','name');
print_r($d1);
           

複制

以上代碼輸出内容如下:

Array
(
    [A] => 1
    [B] => 2
    [C] => 3
)
           

複制

輸出以第二個參數對應列為鍵,第一個參數對應列為值的關聯數組。

如果第二個參數對應的列的資料有重複的情況

$d1 = array_column($data,'id','city');
print_r($d1);
           

複制

對于有重複情況的輸入,輸出内容如下:

Array
(
    [Beijin] => 3
    [Shanghai] => 2
)
           

複制

相同鍵盤,保留最後一次的值。

如果對應鍵或者值的列資料不一定存在情況

$d1 = array_column($data,'age','name');
$d2 = array_column($data,'name','age');
print_r($d1);
print_r($d2);
           

複制

以上代碼輸出内容如下:

Array
(
    [B] => 20
    [C] => 30
)
Array
(
    [0] => A
    [20] => B
    [30] => C
)
           

複制

如果值不存在,直接丢棄該子數組資料。當鍵不存在的情況,則以下标為0開始填充數組。如果輸入的鍵根本不存在,則完全跟一個參數輸入的時候一樣

總結

php 數組函數array_column 函數使用的作用:

  • 單個輸入,傳回指定列的值。如果某項資料不存在該列,則傳回資料沒有該項資料。如果列不存在,則傳回空數組。隻傳回存在該列的資料項該列組成的數組。
  • 多個輸入,傳回以第一個參數對應列為值,第二個參數隊列列資料為鍵的關聯數組。鍵對應列不完整,從0開始遞增填充。值列對應資料不完整,直接丢棄不完整資料。