數(shù)組相關(guān)函數(shù)
自定義數(shù)組打印函數(shù),便于查看
function print_array($array){
foreach($array as $key => $value){
echo "$key => $value ";
}
}
排序函數(shù)
按照 ASCII 碼排序
??sort?
? 對 array 本身按照值(value)升序排序。(下標重排)
sort(array &$array, int $flags = SORT_REGULAR): bool
// eg:
$arr = ['Tom', 'Jack', 'Steve'];
sort($arr);
print_array($arr);
// 0 => Jack
// 1 => Steve
// 2 => Tom
??rsort?
? 對 array 本身按照值(value)降序排序。
rsort(array &$array, int $flags = SORT_REGULAR): bool
// eg:
$arr = ['Tom', 'Jack', 'Steve'];
rsort($arr);
print_array($arr);
// 0 => Tom
// 1 => Steve
// 2 => Jack
??asort?
? 對 array 自身按照升序進行排序(下標保留)
asort(array &$array, int $flags = SORT_REGULAR): bool
// eg:
$arr = ['Tom', 'Jack', 'Steve'];
asort($arr);
print_array($arr);
// 1 => Jack
// 2 => Steve
// 0 => Tom
??arsort?
? 對 array 本身按照降序排序
arsort(array &$array, int $flags = SORT_REGULAR): bool
// eg:
$arr = ['Tom', 'Jack', 'Steve'];
arsort($arr);
print_array($arr);
// 0 => Tom
// 2 => Steve
// 1 => Jack
??ksort?
? 對 array 本身進行按鍵(key)升序排序。
ksort(array &$array, int $flags = SORT_REGULAR): bool
// eg:
$arr = ['Tom', 'Jack', 'Steve'];
ksort($arr);
print_array($arr);
// 0 => Tom
// 1 => Jack
// 2 => Steve
??krsort?
? 對 array 本身按照鍵(key)降序排序。
krsort(array &$array, int $flags = SORT_REGULAR): bool
// eg:
$arr = ['Tom', 'Jack', 'Steve'];
krsort($arr);
print_array($arr);
// 2 => Steve
// 1 => Jack
// 0 => Tom
??shuffle?
? 隨機打亂
shuffle(array &$array): bool
// eg:
$arr = ['Tom', 'Jack', 'Steve'];
shuffle($arr);
print_array($arr);
// 0 => Jack
// 1 => Steve
// 2 => Tom
指針函數(shù)
reset 將 array 的內(nèi)部指針倒回到第一個單元并返回第一個數(shù)組單元的值。
reset(array|object &$array): mixed
end 將 array 的內(nèi)部指針移動到最后一個單元并返回其值。
end(array|object &$array): mixed
next 將數(shù)組中的內(nèi)部指針向前移動一位
next(array|object &$array): mixed
prev 將數(shù)組的內(nèi)部指針倒回一位
prev(array|object &$array): mixed
current 返回數(shù)組中的當前值
current(array|object $array): mixed
key 返回數(shù)組中當前單元的鍵名。
key(array|object $array): int|string|null
注意:next 和 prev 移動指針,可能移出數(shù)組,只能通過 end 或者 reset 重置指針
示例
$arr = [1, 3, 5, 7, 9];
echo next($arr);
echo next($arr);
echo prev($arr);
echo current($arr);
echo key($arr);
echo reset($arr);
echo end($arr);
// 3533119
其他函數(shù)
count 統(tǒng)計數(shù)組、Countable 對象中所有元素的數(shù)量
count(Countable|array $value, int $mode = COUNT_NORMAL): int
// eg:
$arr = [1, 2, 3, 4, 5];
echo count($arr);
// 5
array_push 將 array 當成一個棧,并將傳入的變量壓入 array 的末尾。
array_push(array &$array, mixed $value1, mixed $... = ?): int
// 和如下效果相同:
$array[] = $var;
array_pop 彈出并返回 array 最后一個元素的值
array_pop(array &$array): mixed
array_shift 將 array 的第一個單元移出并作為結(jié)果返回
array_shift(array &$array): mixed
array_unshift 在數(shù)組開頭插入一個或多個單元
array_unshift(array &$array, mixed ...$values): int
數(shù)據(jù)結(jié)構(gòu)
- 棧 壓棧,F(xiàn)ILO先進后出
- 隊列 排隊,F(xiàn)IFO 先進先出
實現(xiàn)棧:
- 前面 array_unshift/array_shift
- 后面 array_push/array_pop
$arr = [];
// 入棧
array_push($arr, 1);
array_push($arr, 2);
array_push($arr, 3);
// 出棧
echo array_pop($arr), array_pop($arr), array_pop($arr);
// 321
實現(xiàn)隊列:
- 后進前出 array_push/array_shift
- 前進后出 array_unshift/array_pop
$arr = [];
// 入隊
array_push($arr, 1);
array_push($arr, 2);
array_push($arr, 3);
// 出隊
echo array_shift($arr), array_shift($arr), array_shift($arr);
// 123
array_reverse 返回一個單元為相反順序的新數(shù)組
array_reverse(array $array, bool $preserve_keys = false): array
// eg
$arr = [1, 2, 3, 4, 5];
print_array(array_reverse($arr));
// 0 => 5
// 1 => 4
// 2 => 3
// 3 => 2
// 4 => 1
in_array 檢查數(shù)組中是否存在某個值
in_array(mixed $needle, array $haystack, bool $strict = false): bool
// eg
$arr = [1, 2, 3, 4, 5];
var_dump(in_array(5, $arr));
// bool(true)
array_keys 返回數(shù)組中部分的或所有的鍵名
array_keys(array $array): array
array_keys(array $array, mixed $search_value, bool $strict = false): array
// eg
$arr = ['Tom', 'Jack', 'Steve'];
echo json_encode(array_keys($arr));
// [0,1,2]
array_values 返回 input 數(shù)組中所有的值并給其建立數(shù)字索引。
array_values(array $array): array
// eg
$arr = ['Tom', 'Jack', 'Steve'];
echo json_encode(array_values($arr));
// ["Tom","Jack","Steve"]
本文摘自 :https://blog.51cto.com/u