// 1. 创建数组echo "1. 创建数组<br>";// 1.1 字面量$arr = ['a', 1, 2];// Array ( [0] => a [1] => 1 [2] => 2 )echo print_r($arr, true), '<br>';// 1.2 索引创建$arr[3] = 'b';// Array ( [0] => a [1] => 1 [2] => 2 [3] => b )echo print_r($arr, true), '<br>';// 1.2 函数创建$arr = array(1, 2, 3);// Array ( [0] => 1 [1] => 2 [2] => 3 )echo print_r($arr, true), '<br>';// 1.3 填充创建$arr = range('a', 'f', 2);// Array ( [0] => a [1] => c [2] => e )echo print_r($arr, true), '<br>';// 1.4 位置添加// 1.4.1 头部添加$n = array_unshift($arr, 1, 2);// $n = 5; Array ( [0] => 1 [1] => 2 [2] => a [3] => c [4] => e )echo "\$n = $n; ", print_r($arr, true), '<br>';// 1.4.2 尾部添加$n = array_push($arr, 'g', 'h');// $n = 7; Array ( [0] => 1 [1] => 2 [2] => a [3] => c [4] => e [5] => g [6] => h )echo "\$n = $n; ", print_r($arr, true), '<br>';echo '<hr>';
// 2. 删除数组echo "2. 删除数组<br>";// 2.1 头部删除$a = array_shift($arr);$b = array_shift($arr);// $a = 1, $b = 2; Array ( [0] => a [1] => c [2] => e [3] => g [4] => h )echo "\$a = $a, \$b = $b; ", print_r($arr, true), '<br>';// 2.2 尾部删除$a = array_pop($arr);$b = array_pop($arr);// $a = h, $b = g; Array ( [0] => a [1] => c [2] => e )echo "\$a = $a, \$b = $b; ", print_r($arr, true), '<br>';// 2.3.1 位置删除// 第1位置删2个$arr1 = array_splice($arr, 1, 2);// Array ( [0] => c [1] => e ) ; Array ( [0] => a )echo print_r($arr1, true), '; ', print_r($arr, true), '<br>';// 2.3.2 位置插入// 位置1插入数组$arr2 = array_splice($arr, 1, 0, ['c', 'b']);// Array ( ) ; Array ( [0] => a [1] => c [2] => b )echo print_r($arr2, true), '; ', print_r($arr, true), '<br>';// 2.3.3 更新数组// 位置1开始两个元素,更新数组 ['b', 'c'] 含两个元素$arr3 = array_splice($arr, 1, 2, ['b', 'c']);// Array ( [0] => c [1] => b ) ; Array ( [0] => a [1] => b [2] => c )echo print_r($arr3, true), '; ', print_r($arr, true), '<br>';echo '<hr>';
// 3. 数组指针echo "3. 数组指针<br>";// 0 => aecho key($arr) .' => '. current($arr) .'<br>';// 后一个next($arr);next($arr);// 2 => cecho key($arr) .' => '. current($arr) .'<br>';// 前一个prev($arr);// 1 => becho key($arr) .' => '. current($arr) .'<br>';// 第一个reset($arr);// 0 => aecho key($arr) .' => '. current($arr) .'<br>';// 最后一个end($arr);// 2 => cecho key($arr) .' => '. current($arr) .'<br>';echo '<hr>';
// 4. 键值操作echo "4. 键值操作<br>";// 取键数组$keys = array_keys($arr);// Array ( [0] => 0 [1] => 1 [2] => 2 )echo print_r($keys, true), '<br>';// 取值数组$values = array_values($arr);// Array ( [0] => a [1] => b [2] => c )echo print_r($values, true), '<br>';// 判断键存在// key = 2, exist : trueecho 'key = 2, exist : ', var_export(array_key_exists(2, $arr), true), '<br>';// 判断值存在// value = 'b', exist : trueecho 'value = \'b\', exist : ', var_export(in_array('b', $arr), true), '<br>';// 数组搜索$pos1 = array_search('b', $arr);$pos2 = array_search('z', $arr);// 'b' index : 1echo "'b' index : ", var_export($pos1, true) .'<br>';// 'z' index : falseecho "'z' index : ", var_export($pos2, true) .'<br>';echo '<hr>';
// 5. 数组回调echo "5. 数组回调<br>";// 5.1 数组漫步$bool = array_walk($arr, function(&$value, $key, $userdata){if ($key === 0) $value = $userdata[0] .'-'. $value;if ($value === 'b') $value = $userdata[1];if ($value === 'c') $value .= '-'. $userdata[2];}, ['prefix', '', 'suffix']);// $bool = true; Array ( [0] => prefix-a [1] => [2] => c-suffix )echo '$bool = ', var_export($bool, true), '; ', print_r($arr, true), '<br>';// 5.2 数组过滤// 5.2.1 过滤空值$arr = array_filter($arr);// Array ( [0] => prefix-a [2] => c-suffix )echo print_r($arr, true), '<br>';// 5.2.2 条件过滤// 过滤值中包含字符串 fix 的元素组成的数组$arr = array_filter($arr, function($value){return false !== stripos($value, 'fix');});// Array ( [0] => prefix-a [2] => c-suffix )echo print_r($arr, true), '<br>';// 5.3 数组遍历// 5.3.1 批量导入$map_arr1 = array_map(function($file){// 批量导入//require $file;// 返回文件名return basename($file);}, glob(__DIR__ .'/012*.php'));// 当前目录下 012开头且 .php 结尾的文件名// Array ( [0] => 0125.php [1] => 0126.php [2] => 0127.php [3] => 0128.php [4] => 0129.php )echo print_r($map_arr1, true), '<br>';// 5.3.2 批量计算$arr1 = [1, 2, 3];$arr2 = [3, 2, 1];$map_arr2 = array_map(function($a, $b){return $a * $b;}, $arr1, $arr2);// 两个数组,各自项目乘积组成的数组// Array ( [0] => 3 [1] => 4 [2] => 3 )echo print_r($map_arr2, true), '<br>';// 5.4 数组归并// 5.4.1 数组求和$arr_reduce1 = array_reduce($map_arr2, function($prev, $next){return $prev + $next;});echo "array_sum : $arr_reduce1<br>";// 5.4.2 多数组分列求和$arr_reduce2 = array_reduce([$arr1, $arr2], function($prev, $next){return array_map(function($a, $b){return $a + $b;}, $prev, $next);}, [0, 0, 0]);// Array ( [0] => 4 [1] => 4 [2] => 4 )echo print_r($arr_reduce2, true);

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号