定义一维数组
用array()函数定义一维数组,基本语法结构如下:
array([key=>] value,…)
- 例如:$arr=array(“first_element”=>“CPU”,2=>"内存“);List item
数组$arr中包含了两个元素,分别使用字符串first_element和整数2作为键来标识。第1个数组元素的值为”CPU",第2个数组元素的值为“内存”。
在定义数组时,也可以不指定键。此时,程序会自动使用从0开始的整数作为关键字。
- 例如:$arr=array(“CPU”,"内存”,“硬盘”);
- 等同于 $arr=array(0=>“CPU”,2=>“内存”,3=>“硬盘”);
- 可以通过向数组赋值的方式来添加数组元素,例如,执行下面的语句可以在数组$arr中添加一个键为4的元素,它的值为“声卡”
$arr[4]=“声卡”; - 也可以不指定键,只在数组变量后面加一对空的方括号来添加数组元素,代码如下:
$arr[]=“显卡”;
print_r($arr)输出数组
定义多维数组
语法结构:
array([key=>] array([key=>] value),…)
其中value还可以嵌套array()函数来定义数组。
例如:
$arr=array(array("CPU","内存"),array("硬盘","声卡"));
$arr2[0][0]="CPU";
$arr2[0][1]="内存";
$arr2[1][0]="硬盘";
$arr2[1][1]="声卡";
$arr3[0][]="CPU";
$arr3[0][]="内存";
$arr3[1][]="硬盘";
$arr3[1][]="声卡";
//$arr $arr2 $arr3都是一样的
数组元素
- 访问数组元素 通过下标访问
-echo($arr[1][1]) =声卡
添加数组元素,两个函数
- array_unshift($数组名,添加的数组值1,…添加的数组值n)
通过array_unshift添加是值出现在数字的开头。
<?php
$arr=array("CPU","内存","显卡");
print_r($arr);
print("<br/>");
array_unshift($arr,"apple");
print_r($arr);
- array_push()函数,在数组末尾插入一个或多个元素
array_push($数组名,添加的值1,…添加的值n)
<?php
$arr=array("CPU","内存","显卡");
print_r($arr);
print("<br/>");
array_unshift($arr,"apple","OK");
print_r($arr);
array_push($arr,"hello","hay");
print("<br/>");
print_r($arr);
删除数组中的元素两个函数
- 删除数组的第一个元素,array_shift(),语法:array_shift($数组名)
- 删除数组的最后一个元素,array_pop(),语法:array_pop($数组名)
<?php
$arr=array("orange","apple","banana","pear");
$fruit=array_shift($arr);
print_r($arr);
echo("<br/>");
echo("删除了头部:");
echo($fruit);
echo("<br/>");
print_r($arr);
echo("<br/>");
$fruit2=array_pop($arr);
echo("删除了尾部:");
echo($fruit2);
echo("<br/>");
print_r($arr);
定位数组元素
- 搜索数组中是否存在指定值 in_array()函数
bool in_array(mixed $needle,array $haystack,[,bool $strict])
功能是在haystack中搜索是否存在needle,如果找到就返回true,找不到就返回false,如果第3个参数strict的值为true,还会检查needle和haystack的数据类型是否相同。 - 搜索数组中指定值对应的键 array_search()函数
mixed array_search(mixed $needle,array $haystack,[,bool $strict])
功能是在haystack中搜索是否存在needle,如果找到就返回相应的键名,否则返回false,如果第3个参数strict的值为true,还会检查needle和haystack的数据类型是否相同。
提示:如果needle在haystack中出现不止一次,则返回第一个匹配的键,如果needle是字符串,则比较是区分大小写的。
<?php
$language=array("PHP","JAVA","ASP","ASP.NET");
if(in_array("ASP",$language)){
echo "找到了ASP";
}
if(in_array("php",$language)){
echo "找到了php";
}
$array1=array('bule','red','green','red');
$key=array_search('green',$array1);
echo($key);
echo("<br/>");
$key=array_search('red',$array1);
echo($key);
- 检查数组中是否存在指定键
array_key_exists()函数检查
bool array_key_exists(mixed $key,array $search)
函数的功能是在数组search中搜索键key,如果找到则返回TRUE,否则返回FALSE,
字符串要区分大小写。
关于换行
目前我知道的要使浏览器换行就只有"< br/ >"
其他数组函数
- array array_keys(array $input [,mixed $search_value [, bool $strict ] ] )
返回数组input中的数字或字符串的全部键名,如果指定可选参数为search_value则只返回该值对应的键名。这些键名组成一个新的数组的值。 - array array_values(array $input)返回数组中的所有值。
遍历数组元素
- int count(array $arr)获取数组的元素量函数同sizeof()函数
数组指针
- current()函数可以获取当前指针下的数组元素的值,并不移动指针,如果内部指针指向超出了单元列表的末端,则函数返回FALSE
语法: mixed current(array $array) - next()函数可以将数组指针移动到下一个位置
语法:mixed next(array &$array) - end()函数可以将数组指针移动到最后一个单元,并返回该单元。
语法:mixed end(array &$array) - prev()函数可以将数组指针倒回一位,并返回值
语法:mixed prev(array &$array) - reset()函数可以将数组指针指向第一个元素,并返回第一个元素的值。
语法:mixed reset(array &$array) - **foreach()**语句遍历数组元素
<?php
$arr=array('blue','black','purple','green');
foreach ($arr as $val){
echo("$val ");
}
感觉与c++里面基于范围的for循环有点像。
- 确定唯一的数组元素 array_unique()
array array_unique(array $arr)过滤掉数组中重复的元素,返回没有重复值的新数组。
常用数组操作
- 数组排序,升序排列数组 asort()函数 语法:bool asort(array &$array)排序成功,则返回TRUE,否则返回FALSE
- 降序排列数组 arsort()
- 反序排列数组 array_reverse() 语法:array array_reverse(array $array)函数接受数组array作为输入并返回一个单元为相反顺序的新数组。
- 填充数组,array_fill()函数可以指定的值填充所有的数组元素,
语法:array array_fill(int $start_index,int $num,mixed $value)
start_index:指定数组键的起始序号。
num:指定填充数组的元素的数量。
value:指定填充数组元素的值。
合并数组
- array_merge()函数,如果输入的数组中有相同的字符串键名,则该键名后面的值将会覆盖前一个值,然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
语法:array array_merge($arr1, $arr2)
<?php
$arr1=array("color"=>'blue','black','purple','green');
$arr2=array('a','b',"color"=>'hello','oj'=>'purple',4,5);
$re=array_merge($arr1,$arr2);
print_r($re);
echo("<br/>");
$re2=array_merge($arr2,$arr1);
print_r($re2);
echo("<br/>");
$arr3=array('blue','black','purple','green');
$arr4=array('a','b','blue',4,5);
$re3=array_merge($arr3,$arr4);
print_r($re3);
echo("<br/>");
$re4=array_merge($arr4,$arr3);
print_r($re4);
echo("<br/>");
拆分数组
- array_chunk() 语法:array_chunk($input,int $size [,bool $preserve_keys])
$input被拆分数组, $size指定拆分后数组的大小。将可选参数preserve_keys设为TRUE可使PHP保留输入数组中 $input原来的键名。如果将其指定为FALSE,则每个结果数组将用从0开始的新数字索引。默认值是FALSE
<?php
$input_array=array('a','b','c','d','e');
print_r(array_chunk($input_array,2));
echo "<br/>";
print_r(array_chunk($input_array,2,true));
数组统计
-
array_count_values()函数用于统计数组中所有值的次数,结果返回到另一个数组中。可以用此函数对数组中的数据进行统计。
语法:array array_count_values(array $input) 函数返回一个数组,该数组用input数组中的值作为键名,该值在input数组中出现的次数作为值。 -
array_sum()函数可以对数组中元素的值进行求和操作
<?php
$input_array=array(1,2,3,4,5,3,2,1,2,3,4,5);
$a=array_sum($input_array);
echo ($a);