PHP学习笔记四、数组

一、数组

1、什么是数组
一个数组,从简单的形式来讲,是一个保存变量的变量
array('a'=>'php100','b'=>12.3)
PHP学习笔记四、数组
PHP学习笔记四、数组
2、如何创建数组
2.1、第一种格式(无键名,程序自动分配键名:默认从0开始分配)

<?php
$arr=array("chuangen",100,33.33,false);
var_dump($arr);
?>

2.2、第二种格式(有键名)
键名不能一样

<?php
$arr=array('a'=>chuangen",'b'=>100,2=>33.33,3=>false);
var_dump($arr);
?>

2.3、直接给数组赋值

<?php
$arr['name']='张三';
$arr[]=100;//键名:0
$arr[5]=100;//键名:5
$arr[]=100;//键名:6
$arr[]=100;//键名:7
var_dump($arr);
?>

3、获取数组的值
(arr[键名] 4、**查看数组** 使用print_r()arr)。不能使用echo,但如果查看数组中的某个值是可以使用echo。
print_r($arr)后的页面中"查看源代码"方式查看到的结构更加清晰。
5、多维数组

<?php
$arr=array('a'=>array('a','b','c'),'b'=>array(1,2,3));
echo $arr['b'][2];
?>

二、数组函数(常用的)

1、bool is_array(mixed $var):判断一个变量是否是数组

<?php
$arr=array('a','b','c');
echo is_array($arr)?"是数组":"不是数组";
?>

2、int array_unshift(array &$array,mixed $var [,mixed $...]):在数组头添加元素

<?php
$arr=array('a','b','c');
$result= array_unshift($arr,'php');
print_r($arr);
echo $result;//数组的个数
?>

3、mixed array_shift(array &$array):在数组头删除元素

<?php
$arr=array('a','b','c');
$result=array_shift($arr);
print_r($arr);	
print_r($result);//被删除的元素:a
?>

4、mixed array_pop(array &$array):在数组尾删除元素

<?php
$arr=array('a','b','c');
$result=array_pop($arr);
print_r($arr);	
print_r($result);//被删除的元素:c
?>

5、在数组尾部添加元素(直接写就行)

<?php
$arr=array('a','b','c');
$arr[]=array(1,2,3);
print_r($arr);	
?>

6、bool in_array(value,array[,type]):判断数组内是否存在值

<?php
$arr=array('a','b','c');
echo in_array('a',$arr)?"存在":"不存在";
print_r($arr);	
?>

7、array array_unique(array $array):移除数组中重复的值

<?php
$arr=array('a'=>100,'b'=>200,'c'=>100);
$result=array_unique($arr);	
print_r($arr);//原数组不变
print_r($result);//移除后的数组
?>

8、number array_sum(array $array):数组元素求和
'number':有两种类型,整型和浮点型

<?php
$sum=array('0'=>'5','1'=>'10','2'=>'15','3'=>'20');
echo array_sum($sum);
$sum=array('0'=>'1.1','1'=>'2.1','2'=>'3.1','3'=>'4.1');
echo array_sum($sum);
?>

9、数组键与值的排序

bool sort(array &$array)//值正序
bool rsort(array &$array)//值倒序
bool ksort(array &$array)//键正序
bool krsort(array &$array)//键倒序
<?php
$arr=array('a'=>100,'c'=>200,'b'=>30);
sort($arr);
print_r($arr);
?>

三、遍历数组

第一种语法格式

foreach($arr as $key=>$value){
	//循环体
}
<?php
$arr=array('a'=>'php','b'=>'java','html','c++');
foreach ($arr as $key => $value) {
		echo $key.'=>'.$value.'<br/>';
}	
?>

第二种语法格式:

foreach($arr as $value){
	//循环体	
}
<?php
$arr=array(
array("张三","女","23"),
array("李四","男","21"),
array("王五","女","33"),
array("赵四","男","56")
);
foreach ($arr as  $v) {
echo "姓名:".$v[0]."性别:".$v[1]."年龄:".$v[2]."<br/>";
}
?>

例子:
递归遍历数组中的所有元素

<?php	
$arr=array(1,2,3,4,array(11,22,33,array(111,222,333)));
function fun_array($arr,&$str){
foreach ($arr as $v) {
	if (is_array($v)) {
		fun_array($v,$str);
	}
	else{
		$str.= $v."<br/>";
	}
}
}
$str="";
fun_array($arr,$str);
echo $str;
?>