diff --git a/blog/php-basic/array-function.md b/blog/php-basic/array-function.md new file mode 100644 index 0000000000000000000000000000000000000000..216e37fdf1ccfd403c5ca4f0c33b56d7218a409f --- /dev/null +++ b/blog/php-basic/array-function.md @@ -0,0 +1,161 @@ +# 数组相关函数 + + +自定义数组打印函数,便于查看 + +```php + +function print_array($array){ + foreach($array as $key => $value){ + echo "$key => $value\n"; + } +} + +``` + +## 排序函数 + +按照ASCII码排序 + +`sort` 对 array 本身按照值(value)升序排序。(下标重排) + +```php +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)降序排序。 + +```php +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 自身按照升序进行排序(下标保留) + +```php +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 本身按照降序排序 + +```php +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)升序排序。 + +```php +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)降序排序。 + +```php +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` 随机打乱 + +```php +shuffle(array &$array): bool + + +// eg: +$arr = ['Tom', 'Jack', 'Steve']; + +shuffle($arr); + +print_array($arr); +// 0 => Jack +// 1 => Steve +// 2 => Tom +``` + +## 指针函数 + +reset +end +next +prev +current +key + +## 其他函数 + +count +array_push() +array_pop +array_reverse +in_array +array_keys +array_values + +https://www.bilibili.com/video/BV18x411H7qD?p=87&spm_id_from=pageDriver \ No newline at end of file diff --git a/blog/php-basic/array.md b/blog/php-basic/array.md new file mode 100644 index 0000000000000000000000000000000000000000..68420630368b6f6181da38557da1ea34d95db8bd --- /dev/null +++ b/blog/php-basic/array.md @@ -0,0 +1,281 @@ +# 数组 array + +## 数组的概念 + +数据的组合,将一组数据存储到一个指定的容器中,用变量指向该容器。 +可以通过变量一次性得到该容器中的所有数据 + +## 数组的定义 + +```php +// 1、使用array关键字 +$变量 = array(元素1, 元素2, ...); + +// 2、使用中括号 +$变量 = [元素1, 元素2, ...]; + +// 3、隐形定义数组 +$变量[] = 值1; // 默认下标是数字,默认从0开始 +$变量[下标] = 值; // 下标或者key,可以是数字或字符串 +// 下标自动为前面最大+1 +``` + +示例 + +```php +// 方式一: +$arr = array('Tom', 'Jack', 'Steve'); + +// 方式二: +$arr = ['Tom', 'Jack', 'Steve']; + +// 方式三: +$arr[] = 'Tom'; +$arr[] = 'Jack'; +$arr[] = 'Steve'; + +// 输出结果一样 +var_dump($arr); +// array(3) { +// [0]=> string(3) "Tom" +// [1]=> string(4) "Jack" +// [2]=> string(5) "Steve" +// } + + +``` + +## PHP 数组特点 + +1、可以整数下标或者字符串下标 + +- 索引数组:数组下标为整数 +- 关联数组:数组下标为字符串 +- 混合数组:不同下标可以混合存在 + +2、数组元素的顺序以放入顺序为准,跟下标无关 + +3、数字下标的自增长特性 + +4、特殊值下标的自动转换 + +```php + string(3) "Tom" +// [1] => string(4) "Jack" +// [""]=> string(5) "Steve" +// } +``` + +5、PHP 数组元素没有类型限制 + +6、PHP 数组元素没有长度限制 + +## 多维数组 + +多维数组:数组里的元素又是数组 + +1、二维数组: 数组中的所有元素都是一维数组 + +```php + 'Tom', + 'age'=> 23 + ], + [ + 'name'=> 'Jack', + 'age'=> 24 + ], + +]; + +var_dump($arr); + + +// array(2) { +// [0]=> array(2) { +// ["name"] => string(3) "Tom" +// ["age"] => int(23) +// } +// [1]=> array(2) { +// ["name"] => string(4) "Jack" +// ["age"] => int(24) +// } +// } + +``` + +2、多维数组:二维数组中的元素可以继续是数组 + +不建议超过三维以上的数组 + +3、异型数组(不规则数组) + +数组的中的元素不规则,有普通基本变量也有数组 + +## 数组遍历 + +普通数组可以通过下标来访问 + +```php + 'Tom', + 'age' => 23 + ], + [ + 'name'=> 'Jack', + 'age' => 24 + ], +]; + +// 访问一维 +var_dump($arr[0]); +// array(2) { +// ["name"] => string(3) "Tom" +// ["age"] => int(23) +// } + +// 访问二维 +var_dump($arr[0]['name']); +// string(3) "Tom" + +``` + +1、Foreach 语法 + +```php +foreach($数组 as [$key =>] $value){ + // key下标 value值 +} +``` + +示例 + +```php + 'Tom', + 'age' => 23 + ], + [ + 'name'=> 'Jack', + 'age' => 24 + ], +]; + +foreach($arr as $index => $item){ + echo $index, $item['name'], $item['age'] . PHP_EOL; +} +// 0Tom23 +// 1Jack24 + +``` + +2、foreach 遍历原理 + +本质是数组内部有一个指针,默认指向数组元素的第一个元素 +foreach 就是利用指针取获取数据,同时移动指针 + +1. foreach 会重置指针,让指针指向第一个元素 +2. 进入 foreach 循环,通过指针获取元素 +3. 进入循环体执行 +4. 重复此过程,直到取不到元素 + +3、for 循环遍历数组 + +获取数组长度 count() +要求数组元素下标有规律 + +```php + int(0) +// [1] => string(3) "Tom" +// ["key"] => int(0) +// ["value"] => string(3) "Tom" +// } +``` + +5、list 按照下标取值 + +```php +