内容:
数组
函数
对象
数组
什么是数组:
数组是特殊的变量,可以在单个变量中同时保存一个或一个以上的值,并且可以通过下标来访问其中的某一个值。在PHP中,用array()函数创建数组。同时在php中数组中可以存储任意类型的数据。
和定义变量一样:
$arr = array(‘我是’,‘一个’,‘数组’);
PHP中的数组一般分为两种:
索引数组和关联数组。第三种叫做多维度数组。
索引数组:
索引数组是指数组的键是整数的数组,并且键的整数顺序是从0开始的,数组中第一个值的键为0,第二个值的键为1,以此类推。
索引数组三种赋值方式:
1)用数组变量的名字后面加一个中括号的方式赋值。而且中括号内的键一定要是整数。
例如:$a[1]=0;
2)用array()创建一个空数组,使用=>分隔键和值,左侧表示键,右侧表示值。而且键一定是整数。
3)用array()创建一个空数组,直接在数组里用英文的单引号''或者英文的双引号""赋值,数组会默认建立从0开始的整数的键。
访问索引数组的内容:
1.直接使用索引来输出:
<?php
$a = array(1,2,3);
$b = $a[0];
echo $b;
?>
2.使用for循环输出:
<?php
$a = array("1","2","3");
for($i=0; $i<3; $i++){
echo "<br />";
echo "数组中的第".($i+1)."值为".$a[$i]."。";
}
?>
运行结果:
3.使用foreach输出:
<?php
$a=array("1","2","3");
foreach($a as $key=>$z){ //$z -> $v
echo "<br />";
echo "数组中的第".($key+1)."个值为".$z."。";
}
?>
运行结果:
关联数组:
关联数组是使用分配给数组的指定键的数组。里面的键和值是一一对应的,键不能重复。
关联数组赋值方式:
1)用数组变量的名字后面加一个中括号的方式赋值,而且在关联数组中,中括号内的键一定是字符串。例如,$arr['a']=1;
2)用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。
例如,$arr = array('a'=>1,'b'=>'3');
补充:自PHP5.4起,可以使用短数组表示方法来代替array(),$array = ["foo" => "bar","bar" => "foo",];
访问关联数组的内容:
1.直接使用键来输出:
<?php
$score = array("Maths" => "数学");
$scoreMaths = $score["Maths"];
echo $scoreMaths;
?>
运行结果:数学
2.使用foreach输出:
<?php
$project = array(
"China" => "语文",
"Maths" => "数学",
"English" => "英语"
);
foreach ($project as $k=>$z){ //$z -> $v
echo $k."是".$z."。";
echo "<br >";
}
echo $project["Maths"];
?>
运行结果:
多维数组的简单使用:
1.二维数组
$arra = array('a',12,'33');
$arrb = array('ab','cc',45,$arra);
2.三维数组
$arra = array('1',2,3);
$arrb = array(11,$arra);
$arrc = array($arrb);
数组的一些操作技巧
1.获取数组的长度,count()和 sizeof()统计数组下标的个数
2.each() 返回当前元素的键名和键值,并将内部指针向前移动
3.list() 用于在一次操作中给一组变量赋值
4.数组元素的排序:
sort()、asort()和 ksort()都是正向排序,rsort()、arsort()和 krsort()是反向排序
5.array_count_values()统计数组内下标值的个数
6.current():每个数组都有一个内部指针指向他的当前单元,初始指向插入到数组中的第一个元素
7.array_pad函数,数组数组首尾选择性追加
8.unset() 用于销毁指定的变量
9.array_fill() 用键值填充数组
10.array_combine() 通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组元素为键值
11.array_splice()删除数组成员
12.array_unique删除数组中的重复值
13.array_flip()交换数组的键值和值
14.array_search()搜索数值
代码:
//1 获取数组的长度, count() sizeof() 统计数组下标的个数
$arr=array("a","b","c",10,"a","b","c",10,"a","b","c",10);
echo count($arr); //12
echo sizeof($arr); //12
//2 each() 7.0以后不能用 返回当前元素的键名和键值,并将内部指针向前移动
$arr=array("abc","bcd","ade");
var_dump(each($arr));
var_dump(each($arr));
var_dump(each($arr));
var_dump(each($arr)); //bool(false)
$arr=array("abc","bcd","ade");
while (true){ //true 死循环
$a=each($arr);
if ($a==false){
break;
}
var_dump($a);
}
//化简
while ($a=each($arr)){ //true 死循环
var_dump($a);
}
运行结果:
//3 list() 用于在一次操作中给一组变量赋值
$arr=array("abc","bcd","ade");
echo $a=$arr[0]; //abc
$arr=array("abc","bcd","ade");
$a=$arr[0];
$b=$arr[1];
$c=$arr[2];
list($a,$b,$c)=$arr;
echo $b; //bcd
$num=345;
$a1=str_split($num);
list($a,$b,$c)=$a1;
echo $a; //3
echo $b; //4
echo $c; //5
//array_reverse() 反转数组
$a=array("aa","bb","cc","dd");
$a1=array_reverse($a);
list($a,$b,$c,$d)=$a1;
var_dump($a1) ;
运行结果:
$a=array("Volvo","XC90",array("BMW","Toyota"));
$reverse=array_reverse($a);
$preserve=array_reverse($a,true);
print_r($a);
print_r($reverse);
print_r($preserve);
运行结果:
//4 排序 sort正向排序 rsort反向排序
$arr=[7,13,12,4]; //快速排序算法
sort($arr);
var_dump($arr) ;
rsort($arr);
var_dump($arr) ;
运行结果:
//5 array_count_values() 统计数组内下标值的个数 (数组中出现的次数)
$arr=[7,13,12,4,9,10,0,12,4,9,10,0,12,4,9,10,0,12,4,9,10,0];
var_dump(array_count_values($arr)); //array(7) { [7]=> int(1) [13]=> int(1) [12]=> int(4) [4]=> int(4) [9]=> int(4) [10]=> int(4) [0]=> int(4) }
//7 array_pad() array_pad(array $input, $pad_size, $pad_value)
$arr=[7,13,12,4];
var_dump(array_pad($arr,7,0)); // 正 补后面 array(7) { [0]=> int(7) [1]=> int(13) [2]=> int(12) [3]=> int(4) [4]=> int(0) [5]=> int(0) [6]=> int(0) }
var_dump(array_pad($arr,-7,0)); //负 补到前面 array(7) { [0]=> int(0) [1]=> int(0) [2]=> int(0) [3]=> int(7) [4]=> int(13) [5]=> int(12) [6]=> int(4) }
var_dump(array_pad($arr,3,0)); // 追加 array(4) { [0]=> int(7) [1]=> int(13) [2]=> int(12) [3]=> int(4) }
//8 unset() 用于销毁指定的变量
$a=1;
unset($a);
echo $a; // 删变量 Notice: Undefined variable: a in C:\phpStudy\PHPTutorial\WWW\phpstudy1\day03\arr.php on line 192
//9 array_fill() 用键值填充数组 array_fill ($start_index, $num, $value) 创建数组
$a=array_fill(3,10,”abc”); // 从3开始 10次 输出abc
var_dump($a);
运行结果:
//10 array_combine() array_combine(array $keys, array $values)
//通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组元素为键值
$arr=["a","b","c"];
$arr1=["aa","bb","cc"];
$arr2=array_combine($arr,$arr1);
var_dump($arr2); //array(3) { ["a"]=> string(2) "aa" ["b"]=> string(2) "bb" ["c"]=> string(2) "cc" }
运行结果:
//11 array_splice()删除数组成员
// array_splice (array &$input, $offset, $length = null, $replacement = null)
// 删除 替换 插入
$arr=["a","b","c","d","f","g"];
array_splice($arr,2,2);
var_dump($arr); // a b f g 删除cd
array_splice($arr,2);
var_dump($arr); // a b 删除下标是2往后的
array_splice($arr,2,2,array("a","b","c"));
var_dump($arr); // a b a b c 将cd 删除插入 abc
array_splice($arr,3,1,array("a","b","c"));
var_dump($arr); //a b c a b c f g 将下标3的d 替换成 a b c
运行结果:
//12 array_unique删除数组中的重复值
//去重 array_unique(array $array, $sort_flags = SORT_STRING)
$arr=["a","b","c","a","c","e"];
var_dump(array_unique($arr)); // a b c e
//13 array_flip()交换数组的键值和值
$arr=["a","b","c"];
$arr1=["aa","bb","cc"];
$arr2=array_combine($arr,$arr1);
var_dump($arr2); //array(3) { ["a"]=> string(2) "aa" ["b"]=> string(2) "bb" ["c"]=> string(2) "cc" }
$arr3=array_flip($arr2);
var_dump($arr3); // array(3) { ["aa"]=> string(1) "a" ["bb"]=> string(1) "b" ["cc"]=> string(1) "c" }
运行结果:
//14 array_search()搜索数值 array_search ($needle, array $haystack, $strict = null)
$arr=["a","b","c","a","c","e"];
echo array_search("c",$arr); //2
var_dump(array_search("f",$arr)); //bool(false)