您好,登錄后才能下訂單哦!
PHP 中數組有兩種模式:索引數組和關聯數組。索引數組使用數字作為鍵,
而關聯數組則使用字符串作為鍵。 打印數組 print_r() var_dump() var_export();
使用 list 函數將元素值返回至變量
//使用 list 函數
list($name, $age, $gender) = array('張三', 33, '男');
//輸出元素值的變量
echo $name.'的性別是:'.$gender.',今年'.$age.'歲';
//只獲取姓名和性別
list($name,,$gender) = array('張三', 33, '男')
元素值的增減
1.第一種增加數組元素值的方法:數組名+[] = 元素值,即可在數組尾部增加一個元
素值。
//原數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子');
//在數組尾部添加一個元素值
$phone[] = 'OPPO'; //或$phone['R9'] = 'OPPO'實現關聯數組元素增加
2.使用 array_unshift 函數從數組頭部增加元素值
//在頭部添加元素值,數值索引將重新計算,字符串索引保持不變
array_unshift($phone, 'OPPO', '金立');
3.使用 array_push 函數從數組尾部增加元數值
//在尾部添加元素值,類似$phone[] = 'OPPO'
array_push($phone, 'OPPO', '金立');
4.使用 array_shift 函數從數組頭開始刪除
//從數組開頭刪除一個元素值,數值索引重新計算,字符串索引不變
array_shift($phone);
5.使用 array_pop 函數從數組結尾開始刪除
//從數組結尾刪除一個元素值
array_pop($phone);
6.使用 array_splice 函數刪除或插入元素值
//從位置 2(第三個元素開始),刪除 3 個
array_splice($phone, 2, 3);
//從位置 2(第三個元素開始),刪除至末尾
array_splice($phone, 2);
元素值的遍歷
大多數情況下,我們需要將數組里所有的數據遍歷出來,再按照指定的格式:比如二維
表格的形式展現出來。此時,我們需要一些帶有循環能力的語句。
1.foreach 遍歷
//最推薦常用的遍歷方式
foreach ($phone as $key=>$value) {
echo $key.'|'.$value.'<br>';
}
2.for 循環
//這種只能遍歷數值索引數組,字符串索引沒有 key
for ($i = 0; $i < 6; $i++) {
echo $phone[$i].'<br>';
}
數組判斷操作
1.使用 in_array 函數可以判斷一個元素是否在這個數組中。
//數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子');
//判斷元素值為三星是否在數組中
echo in_array('三星', $phone);
2.使用 array_key_exists 函數可以判斷鍵值或索引是否存在這個數組中。
//數組
$computer = array('聯想'=>'X808', '華碩'=>'Y560', '微星'=>'Z890');
//判斷鍵值為聯想的元素是否在數組中
echo array_key_exists('聯想', $computer);
3.使用 array_search 函數可以搜索元素值的索引值。
//數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子');
//返回搜索的鍵
echo array_search('三星', $phone);
數組轉換操作
1.使用 array_keys 函數可以返回數組中的索引,并組成一個新數組。
//數組
$computer = array('聯想'=>'X808', '華碩'=>'Y560', '微星'=>'Z890');
//提取索引并當作元素組成新數組
$keys = array_keys($computer);
//輸出
var_export($keys);
2.使用 array_values 函數返回所有元素值并重新生成一個數值索引數組。
//數組
$computer = array('聯想'=>'X808', '華碩'=>'Y560', '微星'=>'Z890');
//提取元素值并創建新數組
$values = array_values($computer);
//輸出
var_export($values);
數組拆合操作
1.使用 array_chunk 函數分組數組。
//數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子');
//每兩個分一組,組成多維數組
$chunk = array_chunk($phone, 2);
//打印測試
print_r($chunk);
2.使用 array_merge 函數組合數組。
//數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子');
//數組 2
$computer = array('聯想'=>'X808', '華碩'=>'Y560', '微星'=>'Z890');
//整合兩個數組
$array = array_merge($phone, $computer);
//打印輸出
print_r($array);
3.使用 array_combine 函數合并數組。
//數組 1
$computer = array('聯想'=>'X808', '華碩'=>'Y560', '微星'=>'Z890');
//數組 2
$phone = array('蘋果', '華為', '三星');
//取數組 1 的值作為鍵,取數組 2 的值作為元素值,然后合并
$array = array_combine($computer, $phone);
//打印輸出
print_r($array);
4.使用 array_intersect 函數返回數組中的交集。
//數組 1
$color1 = array('a'=>'green', 'red', 'blue');
//數組 2
$color2 = array('b'=>'green', 'yellow', 'red');
//返回交集并創建新數組
$array = array_intersect($color1, $color2);
//打印輸出
print_r($array);
5.使用 array_diff 函數返回數組的差集。
//數組 1
$color1 = array('a'=>'green', 'red', 'blue');
//數組 2
$color2 = array('b'=>'green', 'yellow', 'red');
//返回差集,并建立新數組
$array = array_diff($color1, $color2);
//打印
print_r($array);
數組計算操作
1.使用 count/sizeof 函數可以返回數組的元素個數。
//數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子');
//得到數組的元素個數
echo count($phone);
//多維數組
$price = array(
array('小米 8', 100, 2999),
array('iphone9 plus', 50, 7999),
array('錘子 x', 10, 3999)
);
//遞歸統計
echo count($price, 1);
2.使用 array_pad 函數填充數組。
//數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子');
//向右填充兩位,數組本身 6 位
$array = array_pad($phone, 8, '占位');
//打印查看
print_r($array);
//負數,可以在左邊填充
$array = array_pad($phone, -8, '占位');
3.使用 array_fill 函數給定的值填充數組。
//創建索引從 3 開始,4 個值為 banana 的數組
$array = array_fill(3, 4, 'banana');
//輸出
var_export($array);
4.使用 array_sum 函數求出數組所有值的和。
//數值數組
$num = array(1, 2, 3, 4, 5, 6);
//求和
echo array_sum($num);
5.使用 array_product 函數返回數組所有數值的乘積。
//數組
$num = array(1, 2, 3, 4, 5, 6);
//求乘積
echo array_product($num);
6.使用 array_unique 函數移出數組中重復的值。
//數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子', '蘋果');
//移除重復的值
$array = array_unique($phone);
//輸出
var_export($array);
7.使用 array_flip 函數將鍵和值對調。
//數組
$computer = array('聯想'=>'X808', '華碩'=>'Y560', '微星'=>'Z890');
//交換鍵和值
$array = array_flip($computer);
//輸出
var_export($array);
8.使用 array_rand 函數從數組中隨機取出一個或多個元素值。
//數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子');
//隨機返回索引
$keys = array_rand($phone);
//輸出
var_export($keys);
//隨機取出兩個
$keys = array_rand($phone, 2);
9.使用 array_count_values 函數統計所有的值出現的次數。
//數組
$phone = array('蘋果', '華為', '三星', '三星', '魅族', '魅族');
//統計
$count = array_count_values($phone);
//輸出
var_export($count);
10.使用 array_column 函數返回數組中指定的一列。
//多維數組
$grade = array(
array(
'數學'=>95,
'語文'=>92,
'英語'=>97
),
array(
'數學'=>99,
'語文'=>95,
'英語'=>92
),
array(
'數學'=>92,
'語文'=>95,
'英語'=>93
),
);
//返回語文一列
$chinese = array_column($grade, '語文');
//輸出
var_export($chinese);
數組迭代操作
1.使用 each 函數獲取當前數組指針定位的鍵值對,并讓指針向下一個位置移動一步。
//數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子');
//獲取第一個位置的鍵值對,并將指針下移
list($key, $value) = each($phone);
//打印第一個位置的鍵值對
echo $key.'-'.$value;
//獲取第二個位置的鍵值對,并將指針下移
list($key, $value) = each($phone);
//打印第二個位置的鍵值對
echo $key.'-'.$value;
2.使用 current 函數返回當前數組指針指向的元素值。
//數組
$phone = array('蘋果', '華為', '三星', '小米', '魅族', '錘子');
//獲取當前指針的元素值
$one = current($phone);
//獲取當前指針的元素值,注:并不會下移指針
$two = current($phone);
//輸出
echo $one;
//輸出
echo $two;
3.使用 next 函數將數組指針移動至下一位。
//獲取一位元素值
$one = current($phone);
//指針下移一位
next($phone);
//獲取下一位元素值
$two = current($phone);
next
4.使用 prev 函數將指針移動至上一位。
//往上一位移動
prev($phone);
5.使用 reset 函數將指針移至第一位。
//移至第一位
reset($phone)
6.使用 end 函數將指針移至末尾。
//移至末尾
end($phone);
7.使用 key 函數返回當前指針元素的鍵。
//移至末尾
key($phone)
數組排序操作
1.使用 sort 函數對數組進行從低到高排序。(按值排序,并重新分配索引)
//數組
$array = array('green', 'red', 'orange', 'blue');
//對源數組進行排序
sort($array);
//打印
print_r($array);
$sort_flags 值較多,我們一一解釋一下:
(1).SORT_REGULAR - 正常比較單元(不改變類型,默認值)
1.如果是字符串,會按照首字母從低到高順序排列;
2.如果是數值,會按照數字從小到大排列,如果其中是數值字符串,不影響;
3.如果是中文字符,在 GBK 的情況下,會按照中文字符的拼音排序,如果是
UTF8,則需要進行一些轉換,這里暫時不深入探討。
(2).SORT_STRING - 單元被作為字符串來比較
//數組
$array = array(2, 12);
//按字符串模式排序
sort($array, SORT_STRING);
//輸出
print_r($array);
(3).SORT_NUMERIC - 單元被作為數字來比較
//數組
$array = array('2', '12');
//按數字排序
sort($array, SORT_NUMERIC);
//輸出
print_r($array);
(4).SORT_NATURAL 自然排序,SORT_FLAG_CASE 和自然排序合并,實現不區分
大小寫排序。
//數組
$array = array('Apple1', 'apple2', 'Apple3', 'apple4');
//不區分大小寫
sort($array, SORT_NATURAL | SORT_FLAG_CASE);
//輸出
print_r($array);
2.使用 rsort 函數對數組進行從高到低排序。(按值排序,并重新分配索引)
//數組
$array = array('green', 'red', 'orange', 'blue');
//對源數組進行排序
sort($array);
//打印
print_r($array);
3.使用 usort 實現自定義排序。(按值排序,并重新分配索引)
//數組
$array = array(7, 3, 5, 9, 1, 4, 2);
//自定義排序
usort($array, function ($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
});
//輸出
print_r($array);
4.asort、arsort、uasort 函數對應上面三個函數的功能,只不過不會重新分配索引。
//數組
$array = array('green', 'red', 'orange', 'blue');
//從低到高排序,但不改變索引
asort($array);
//輸出
print_r($array);
5.ksort、krsort、kasort 函數對應上面三個函數的功能,只不過對鍵進行排序。
//數組
$array = array('x'=>'green', 'j'=>'red', 'b'=>'orange', 'h'=>'blue');
//對鍵進行從低到高排序
ksort($array);
//輸出
print_r($array);
6.使用 shuffle 函數對數組進行隨機排序。
//數組
$array = array('green', 'red', 'orange', 'blue');
//實現隨機排序
shuffle($array);
//輸出
print_r($array);
7.使用natsort實現自然排序,使用natcasesort函數實現不區分大小寫的自然排序。
//數組
$array = array('demo8.php', 'demo1.php', 'demo10.php', 'demo5.php');
//自然排序
natsort($array);
//輸出
print_r($array);
8.使用 array_reverse 函數實現翻轉數組并重新生成。
//數組
$array = array('green', 'red', 'orange', 'blue');
//翻轉數組并返回翻轉的數組
$reverse = array_reverse($array);
//輸出
var_export($reverse);
數組函數補齊
1.使用 compact 函數將變量和值整合成數組。
//變量和值
$name = 'Mr.Lee';
$age = 33;
$job = 'teacher';
//整合成數組
$result = compact('name', 'age', 'job');
//輸出
var_export($result)
2.使用 extract 函數將數組的鍵值解析變量和值。
//數組
$info = array('name'=>'Mr.Lee', 'age'=>33, 'job'=>'teacher');
//解析成變量
extract($info);
//輸出變量
echo $name.$age.$job;
3.使用 array_change_key_case 返回字符串鍵名為小寫或大寫的數組。
//數組
$color = array('Red'=>'apple', 'Orange'=>'banana');
//轉換鍵名為默認小寫并返回新數組
$array = array_change_key_case($color);
//輸出
var_export($array);
4.使用 array_filter 函數過濾元素值。
//數組
$color = array('red', 'blue', 'orange', 'green', 'yellow');
//回調函數進行判斷過濾
$array = array_filter($color, function ($value) {
if ($value != 'green') {
return $value;
}
});
//輸出
var_export($array);
5.使用 array_map 函數處理元素值。
//數組
$num = array(1, 2, 3, 4, 5);
//對元素值進行逐個處理
$array = array_map(function ($n) {
return $n * $n * $n;
}, $num);
//輸出
print_r($array);
//多個數組
$num = array(1, 2, 3, 4, 5);
$enlish = array('one', 'two', 'three', 'four', 'five');
//回調函數為 null,可以合并兩個數組
$array = array_map(null, $num, $enlish);
//輸出
print_r($array);
6.使用 array_reduce 函數迭代的處理元素值簡化為單一值。
//數組
$num = array(1, 2, 3, 4, 5);
//迭代處理
$total = array_reduce($num, function ($v, $w) {
$v += $w;
return $v;
});
//輸出
echo $total;
7.使用 array_replace 函數替換數組元素。
//數組
$color = array('red', 'blue', 'orange', 'green');
//替換的數組
$replacements = array(0=>'yellow');
//執行替換并生成新數組
$array = array_replace($color, $replacements);
//輸出
var_export($array);
8.使用 array_walk 函數可以通過回調函數自定義數組中每個元素值。
//數組
$color = array('red', 'blue', 'orange', 'green');
//更改數組中的元素值
array_walk($color, function (&$value) {
if ($value == 'orange') {
$value = 'yellow';
}
});
//數組
print_r($color)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。