
批改狀態(tài):合格
老師批語:
array_diff(array $array, array ...$arrays) : array
array: 要被比對的數(shù)組
arrays: 更多比較的數(shù)組
該函數(shù)的返回值是一個數(shù)組,該數(shù)組中包含了在array中但是不在其他數(shù)組中的值。值得注意的是,返回的值它對應(yīng)的鍵名不會改變,即:保留原數(shù)組的鍵。
$array1 = ["name" => '張三', "李四", "王五", "趙六"];
$array2 = ["nick" => '張五', "趙六", "李四", "柱子"];
$result = array_diff($array1, $array2);
echo print_r($result, true); // Array ( [name] => 張三 [1] => 王五 )
array_diff_assoc(array $array, array ...$arrays) : array
參數(shù)
array: 要被比對的數(shù)組
arrays: 更多比較的數(shù)組
返回值
返回一個數(shù)組,其中包含array中所有其他數(shù)組中不存在的所有值。注意和array_diff()
不同的是鍵名也用于比較。
案例
$array1 = ["name" => '張三', "李四", "王五", "趙六"];
$array2 = ["nick" => '張三', "李四", "狗子", "柱子"];
$result1 = array_diff($array1, $array2);
echo print_r($result1, true)."<br>"; // Array ( [1] => 王五 [2] => 趙六 )
$result2 = array_diff_assoc($array1, $array2);
echo print_r($result2, true); // Array ( [name] => 張三 [1] => 王五 [2] => 趙六 )
通過上述array_diff()
和array_diff_assoc()
兩個函數(shù)的結(jié)果可以看出,array1
的鍵值對"name" => "張三"
和array2
的鍵值對"nick" => "張三"
它們的值都是相等的,但是鍵名不同,所以在array_diff_assoc()
函數(shù)中還是會輸出該值。相當(dāng)于使用了嚴(yán)格檢查模式。
array_intersect_assoc(array $array, array …$arrays) : array
array: 要檢查的數(shù)組,該數(shù)組作為主值
arrays: 要被對比的數(shù)組列表
返回一個數(shù)組,該數(shù)組包含了在array
中也同時出現(xiàn)在所有其它參數(shù)數(shù)組中的值。注意和array_intersect()
不用的是鍵名也用于比較。
$array1 = ["name" => '張三', "李四", "王五", "趙六"];
$array2 = ["nick" => '張三', "李四", "趙六", "柱子"];
$result = array_intersect_assoc($array1, $array2);
echo print_r($result, true); // Array ( [0] => 李四 )
以上代碼只會輸出[0] => 李四
,因?yàn)橹挥?code>array2中李四的鍵值對
與array1
中的完全相等。
array_merge(array …$arrays) : array
arrays: 要合并的一個或多個數(shù)組
返回一個合并后的結(jié)果數(shù)組。
如果輸入的數(shù)組中有相同的字符串鍵名,那么后者的值將覆蓋前者,但是如果數(shù)組包含數(shù)字鍵名,后面的值將不會覆蓋原來的值,而是會附加在數(shù)組后面。
$array1 = ['color' => 'blue', 3, 5];
$array2 = ['a', 5, 'color' => 'red', 10];
print_r(array_merge($array1, $array2));
// 結(jié)果:
// // Array ( [color] => red [0] => 3 [1] => 5 [2] => a [3] => 5 [4] => 10 )
array_combine(array $keys, array $values) : array
keys: 要當(dāng)做新數(shù)組的鍵。
values: 要當(dāng)做新數(shù)組的值。
返回一個新數(shù)組,如果兩個數(shù)組的數(shù)量不一樣將返回false。
以下代碼會報錯:array_combine(): Both parameters should have an equal number of elements
$array1 = ['color' => 'blue', 3, 5];
$array2 = ['a', 5, 'color' => 'red', 10];
print_r(array_combine($array1, $array2));
正確的代碼應(yīng)該是下面的:
$array1 = ['color' => 'blue', 3, 5];
$array2 = ['a', 5, 'color' => 'red'];
print_r(array_combine($array1, $array2)); // Array ( [blue] => a [3] => 5 [5] => red )
這里有一點(diǎn)值得注意的是:兩個數(shù)組的單元數(shù)量必須是一致的,否則,就會報錯。
array_combine(array $array) : array
array: 需要交換鍵值對的數(shù)組。
成功后返回一個交換了鍵值對的新數(shù)組,如果失敗則返回null。
$array = ['name' => '殘破的蛋蛋', 'age' => 30];
$newArray = print_r(array_flip($array), true);
print_r($newArray)."<br>"; // Array ( [殘破的蛋蛋] => name [30] => age )
// 該方法不會改變原有數(shù)組。
print_r($array); // Array ( [name] => 殘破的蛋蛋 [age] => 30 )
注意:該方法不會改變原有數(shù)組。
array_multisort(array &$array1, mixed $array1_sort_order = SORT_ASC, …$array) : array
array1: 要排序的數(shù)組。
array1_sort_order:排序方式。SORT_ASC:按照升序排序,SORT_DESC按照降順序排序。
…$array:可選項(xiàng),提供更多數(shù)組參與排序,提供的數(shù)組需要和array1
要有相同數(shù)量的元素。
成功返回值ture,失敗返回false。
以下是一組從Redis中查詢出來的購物車數(shù)據(jù)列表:
$cart_lists = Array
(
0 => Array
(
'title' => '黑色連褲襪女顯瘦中厚絲襪',
'image' => 'http://localhost:8082/upload/image/20201116\a6641df33b4e2507c562e7ed7b3b39ee.jpg',
'num' => '1',
'goods_id' => 88,
'create_time' => '1612083130',
'id' => 140,
'price' => 13.90,
'total_price' => 13.9,
'sku' => '顏色 款式:黑色1條裝 款式:踩腳款【高彈力70-135斤】'
),
1 => Array
(
'title' => '黑色連褲襪女顯瘦中厚絲襪',
'image' => 'http://localhost:8082/upload/image/20201116\a6641df33b4e2507c562e7ed7b3b39ee.jpg',
'num' => 1,
'goods_id' => 88,
'create_time' => 1612083133,
'id' => 141,
'price' => 9.90,
'total_price' => 9.9,
'sku' => '顏色 款式:黑色1條裝 款式:九分款【高彈力70-135斤】'
),
2 => Array
(
'title' => '黑色連褲襪女顯瘦中厚絲襪',
'image' => 'http://localhost:8082/upload/image/20201116\a6641df33b4e2507c562e7ed7b3b39ee.jpg',
'num' => 3,
'goods_id' => 88,
'create_time' => 1612082911,
'id' => 130,
'price' => 16.90,
'total_price' => 50.7,
'sku' => '顏色 款式:黑色5條裝16.9 款式:連褲款【高彈力70-135斤】',
),
4 => Array
(
'title' => '黑色連褲襪女顯瘦中厚絲襪',
'image' => 'http://localhost:8082/upload/image/20201116\a6641df33b4e2507c562e7ed7b3b39ee.jpg',
'num' => 1,
'goods_id' => 88,
'create_time' => 1612082923,
'id' => 133,
'price' => 16.90,
'total_price' => 16.9,
'sku' => '顏色 款式:黑色3條裝12.9 款式:連褲款【高彈力70-135斤】'
)
);
現(xiàn)在我們需要按照用戶添加的時間倒序排列購物車?yán)锏臄?shù)據(jù),也就是把最新添加的商品顯示在最前面。
$array_column = array_column($cart_lists, "create_time");
print_r($array_column); // Array ( [0] => 1612083130 [1] => 1612083133 [2] => 1612082911 [3] => 1612082923 )
array_multisort($array_column, SORT_DESC, $cart_lists);
print_r($cart_lists);
注意:array_multisort()
函數(shù)的返回值是ture和false,它是直接在原數(shù)組上進(jìn)行的修改,所以如果要是輸出排序后的數(shù)組,直接打印原數(shù)組即可。
array_product(array $array) : number
array: 參與計(jì)算乘積的數(shù)組。
以整數(shù)或浮點(diǎn)數(shù)返回一個數(shù)組中所有值的乘積。
$a = array(2, 4, 6, 9);
echo sprintf('array數(shù)組的所有值的乘積是:%d', array_product($a)); // array數(shù)組的所有值的乘積是:432
以上結(jié)果會輸出:array數(shù)組的所有值的乘積是:432
。
array_sum(array $array) : number
array: 參與計(jì)算和的數(shù)組。
以整數(shù)或浮點(diǎn)數(shù)返回一個數(shù)組中所有值的和。
$a = array(2, 4, 6, 9);
echo sprintf('array數(shù)組的所有值的和是:%d', array_sum($a)); // array數(shù)組的所有值的和是:21
array_replace(array $array, array $replacement) : array
array_replace()
函數(shù)使用后面數(shù)組元素相同的key值替換前面的數(shù)組元素。如果一個鍵在同時存在于兩個數(shù)組中,第一個數(shù)組中的值將被第二個數(shù)組中的值替換掉。
如果一個鍵存在于第二個數(shù)組中,但不存在于第一個數(shù)組中,則會在第一個數(shù)組中創(chuàng)建這個元素。如果一個鍵僅存在于第一個數(shù)組中,它將保持不變。如果同時傳遞了多個數(shù)組,它們
將被依次處理,后面的數(shù)組覆蓋前面的值。
array: 被替換的數(shù)組。
replacement: 要替換前面數(shù)組的數(shù)組。
返回的是一個被替換之后的數(shù)組,如果發(fā)生錯誤將返回null。
$array = ['blue', 'yellow', 'red', 'lightgreen'];
$replacement1 = [0 => 'blue', 'black', 2 => 'yellow', 4 => 'voilet'];
$replacement2 = [2 => 'green'];
print_r(array_replace($array, $replacement1, $replacement2));
以上結(jié)果會輸出:Array ( [0] => blue [1] => black [2] => green [3] => lightgreen [4] => voilet )
。
array_uniqure(array $array, int $sort_flags = SORT_STRING) : array
array_uniqure()
函數(shù)先將值作為字符串排序,然后每個值值保留第一個遇到的鍵名,接著會忽略后面所有的鍵名
注意:該方法會保留鍵名,當(dāng)且僅當(dāng)($string) $ele1 === (string) $ele2時,才認(rèn)為兩個元素相同。
array: 需要去重的數(shù)組。
返回的是一個被過濾之后的新數(shù)組。
$array = ['a' => 'blue', 'b' => 'yellow', 'blue', 'red', 'green', 'lightgreen'];
$result = array_unique($array, SORT_LOCALE_STRING);
print_r($result);
以上代碼會輸出:Array ( [a] => blue [b] => yellow [1] => red [2] => green [3] => lightgreen )
。
$array = [4, "3", 1, 4, "2", "4", 2, 3];
$result = array_unique($array, SORT_NUMERIC);
print_r($result);
以上代碼會輸出:Array ( [0] => 4 [1] => 3 [2] => 1 [4] => 2 )
。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號