PHP處理數組常用函數匯總

來源:互聯網
上載者:User


PHP中對數組的處理是最常用的必備技能之一。自己總結了一下幾個最常用的處理數組的進階函數。

1. array_merge()

合并數組,將一個或多個數組的單元合并起來,一個數組中的值附加在前一個數組的後面,最後返回一個數組。
關聯陣列:有相同的字串鍵名時,則該鍵名後面的值將覆蓋前一個值
索引數組:後面的值將不會覆蓋原來的值,而是附加到後面

array array_merge (array array1 array2…,arrayN) 
例子:

<?php 
$a = array("a","b","c"); 
$b = array("1","2","3"); 
$c = array_merge($a, $b); 
print_r($c); 
 
// 輸出結果
// Array ( [0] => a [1] => b [2] => c [3] => 1 [4] => 2 [5] => 3 ) 
?>

2. array_merge_recursive()

功能同array_merge(),只不過遇到相同值時處理方式不同
關聯陣列:有相同的字串鍵名時,則該索引值變成一個數組,將相同索引值放在一個數組裡

例子:

<?php 
$a = array("a" => "123", "b" => "yes"); 
$b = array("c" => "no", "a" => "aaa"); 
$d = array_merge_recursive($a, $b); 
print_r($d); 
 
// 輸出結果 
// Array ( [a] => Array ( [0] => 123 [1] => aaa ) [b] => yes [c] => no ) 
?> 

3. array_slice()

拆分索引數組,類似於substr()的用法, offset開始切,切length這麼多個, 不設定length則是切到尾

array array_slice (array array, int offset[,int length]) 
例子:

<?php 
 
$a = array("A", "B", "C", "D", "E", "F", "G"); 
$b = array_slice($a, 3); 
print_r($b); 
 
// 輸出 
// Array ( [0] => D [1] => E [2] => F [3] => G ) 
?> 

4. array_multisort()

返回排序數組:

array_multisort(array1,sorting order,sorting type,array2,array3...)

這個函數功能很強大,有幾個用法:

直接進行排序

<?php
$a1=array("Dog","Cat");
$a2=array("Fido","Missy");
array_multisort($a1,$a2);
print_r($a1);
print_r($a2);

// Array ( [0] => Cat [1] => Dog ) Array ( [0] => Missy [1] => Fido )
?>

設定排序方式進行排序

<?php
/* 設定倒序正序 */
$a1=array("Dog","Dog","Cat");
$a2=array("Pluto","Fido","Missy");
array_multisort($a1,SORT_ASC,$a2,SORT_DESC);
print_r($a1);
print_r($a2);

// Array ( [0] => Cat [1] => Dog [2] => Dog ) Array ( [0] => Missy [1] => Pluto [2] => Fido )

/* 設定倒序正序,排序標準 */
$a1=array(1,30,15,7,25);
$a2=array(4,30,20,41,66);
$num=array_merge($a1,$a2);
array_multisort($num,SORT_DESC,SORT_NUMERIC);
print_r($num);

// Array ( [0] => 66 [1] => 41 [2] => 30 [3] => 30 [4] => 25 [5] => 20 [6] => 15 [7] => 7 [8] => 4 [9] => 1 )
?>

二維數組根據某索引值進行排序

<?php
/* time為要排序欄位, SORT_DESC降序排列, $all要排序的數組 */
foreach ($all as $k => $v)
{
    $time[] = $v['time'];
}
array_multisort($time, SORT_DESC, $all);
?>

5. array_intersect()和array_intersect_assoc()

array_intersect()返回一個保留了鍵的數組,這個數組只由第一個數組中出現的且在其他每個輸入數組中都出現的值組成。
array_intersect_assoc()返回一個在第一個數組中出現,且在所有其他輸入數組中也出現的鍵/值對組成的數組。
應用情境: 共同好友推薦

<?php 
$a = array("Kevin","Mike","Jone"); 
$b = array("Jack","Kevin","Anna"); 
$c = array("Steven","Json","Kevin"); 
$output = array_intersect($a, $b, $c); 
print_r($output); 
 
// output 
// Array ( [0] => Kevin ) 
?> 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.