数组
提出一个问题:
一个养鸡场有6只鸡,他们的体重分别为3kg,5kg,1k个,3.4kg,2kg,6.kg
请问这六只鸡的总体重是多少平均体重是多少请你用现在掌握的技术编一个程序
现在我们使用现有的技术来解决问题
$hen1=3;
$hen2=5;
$hen3=1;
$hen4=3.4;
$hen5=2;
$hen6=50;
如果我们的变量很多,如果我们分别取变量名,显示程序无法控制
怎么办
我们可以使用一个新的数据类型array数组,来统一管理这一组数
什么是数组
可以用于存放多个数据的数据类型
快速入门:来解决上述问题
$hens[0]=3;
$hens[1]=5;
$hens[2]=1;
$hens[3]=3.4;
$hens[4]=2;
$hens[5]=50;
$hens[6]=10;
$allWeight=0;
for($i=0;$i
echo"第".$i."只鸡体重".$hens[$i]."
";
$allWeight+=$hens[$i];
}
echo"共有".count($hens)."只鸡";
echo"
";
echo"总体重是=".$allWeight."平均体重=".$allWeight/count($hens);
?>
数组创建
在php中,数组就是关键字和值的组合,我们可以这样创建
1,创建数组
$arr[0]=121;
$arr[1]=44;
$arr[2]=43;
几个概念:
[0] - >这个称为下标,或者关键字
$arr[0] - >这个称为数组的一个元素
$arr[0]=121; 121表示$arr[0]元素对应的值
$arr- >这个是该数组的名称
在php数组中,元素存放的值可以是任意数据类型
$arr[0]="123";
$arr[1]="hello";
$arr[2]="45.2";
$arr[3]=true;
$arr[4]=null;//即使放入了一个null,也要占用一个空间
//遍历一下
for($i=0;$i
echo'
'.$arr[$i];
}
echo"数组大小".count($arr);
?>
2,创建数组的
第二种方法
基本语法
$数组名= array(值,.....);
举例说明:
$arr=array(23,"hello",234.1);
//遍历一下
for($i=0;$i< count ($arr);$i++) {
echo'
'.$arr[$i];
}
echo"
数组大小". count ($arr);
?>
3,第三种方式
(默认情况下,我们的元素下标是从0开始给你编号,但是,我们可以自己指定)
基本语法:
$arr['logo']="北京";
$arr['hsp']=123;
...
或者
$arr=array("logo"=>"北京","hsp"=>123,4=>234);
案例演示
$arr['logo'] ="北京";
$arr['hsp'] ="123";
/* for($i=0;$i
echo '
'.$arr[$i];这样遍历不行*/
//这个foreach使用范围更广。
foreach($arras$key=>$val) {
echo$key."=".$val.'
';
}
?>
图解理解:
☞特别说明:
1,如果我们创建一个数组时,没有给某个元素指定下标,php就会自动的用目前的最大的那个下标值(整数),加上1作为该元素的下标
$arr=array(5=>"logo",78,123.1);
//我要访问"logo"这个值
echo$arr[5].'
';
echo$arr[7];
?>
2,如果我们给某个元素的下标一样,则会覆盖原来的值
$arr=array(5=>"logo",78,123.1);
//我要访问"logo"这个值
$arr[5]="yes";
echo$arr[5].'
';
echo$arr[7];
?>
3,如果我们使用true,false,null作为key,则应当怎样访问
$arr[true]="hello";
$arr[false]="world";
$arr[null]="no!!";
echo$arr[1].'
';
echo$arr[0].'
';
echo$arr[null];
echo'
'.$arr[""];
$arr[123.3]="yuhua";
echo$arr[123].'
';
?>
4,print_r与var_dump的用法。
$arr[true]="hello";
$arr[false]="world";
$arr[null]="yes";
//我们通常可以使用print_r来显示整个数组的情况
//即:Array ( [1] => hello [0] => world [] => yes )
print_r($arr);
echo"
";
//var_dump可以更加详细的显示数组的信息
//即:array(3) { [1]=> string(5) "hello" [0]=> string(5) "world" [""]=> string(3) "yes" }
var_dump($arr);
?>
5,访问数组时,不要越界
一维数组的引用
基本语法:
$数组名[键值];
如果你写的键值不存在,则会报告
Notice: Undefined offset
//php数组可以动态的增长
$arr=array(2,3);
$arr[4]=56;
//这里说明php数组可以动态的增长。
echo$arr[4];
?>
php数组相关的函数说明
1,count函数
基本语法:
count($数组名),可以统计该数组共有过少个元素
2,is_array
3,print_r和var_dump
4,explode —使用一个字符串分割另一个字符串
此函数返回由字符串组成的数组
案例
//示例1
$pizza="piece1 piece2 piece3 piece4 piece5 piece6";
$pieces= explode(" ",$pizza);
echo$pieces[0].'
';// piece1
echo$pieces[1];// piece2
?>
php数组遍历的四个方法
☞如果使用for whiledo..while要确定该数组的下标是从0开始顺序排放的
$color=array('red','blue','black');
//for
for($i=0;$i< count ($color);$i++) {
echo'
'.$color[$i];
}
echo"
**********";
//while
$i=0;//循环控制变量
while($i< count ($color) ) {
echo'
'.$color[$i];
$i++;
}
//do.. while
echo"
**********";
$i=0;
do{
echo'
'.$color[$i];
$i++;
}while($i< count ($color) );
//foreach
echo"
*********";
foreach($coloras$k=>$v) {
echo"
$k=$v";
//echo '
$k=$v'; //双引号与单引号的区别。
}
?>
unset使用unset函数可以销毁某个元素,也可以销毁某个变量
$arr[0]=112;
$arr[1]=23;
$arr[2]="hello";
echo"
删除前********
";
echo$arr[1];
unset($arr[1]);
echo"
删除后********";
echo$arr[1];
print_r($arr);
?>
数组运算符
$a=array("a"=>"apple","b"=>"banana");
$b=array("a"=>"pear","b"=>"tea","c"=>"cherry");
$c=$a+$b;
//echo '$a+$b result
';
var_dump($c);
echo"
";
$c=$b+$a;
//echo '$b+$a result
';
var_dump($c);
?>
结果:
array(3) { ["a"]=> string(5) "apple" ["b"]=> string(6) "banana" ["c"]=> string(6) "cherry" }
array(3) { ["a"]=> string(4) "pear" ["b"]=> string(3) "tea" ["c"]=> string(6) "cherry" }
数组的案例:
array11.php
请输入学生的成绩,用空格隔开
result.php
//接受用户提交的学生成绩
$grades=$_REQUEST['grade'];
//echo 'grade='.$grades;
//拆分,对成绩进行分割
$grades=explode(" ",$grades);
$allGrades=0;
//遍历
foreach($gradesas$k=>$v){
echo"
$k=$v";
$allGrades+=$v;//隐藏转换string->float
}
//round函数
echo"
平均成绩是=".round($allGrades/count($grades),2);
?>
结果:
0=22
1=22
2=2平均成绩是=15.33
深入一点:
1如何将上面2个页面整合为一个页面
2还要求平均成绩保留到小数点后两位
3如何实现下面的功能
(百度里,关键字提交,不会给你删掉,就是这个原理)
array12.php
请输入学生的成绩,用空格隔开
error_reporting ( E_ALL ^ E_NOTICE );//关闭notice提示
//接受用户提交的学生成绩
$grades1=$_REQUEST['grade'];
//echo 'grade='.$grades;
//拆分,对成绩进行分割
$grades= explode (" ",$grades1);
$allGrades=0;
//遍历
foreach($gradesas$k=>$v) {
//echo "
$k=$v";
$allGrades+=$v;//隐藏转换string->float
}
?>
echo"平均成绩是=". round ($allGrades/ count ($grades),2);
//○2 round(,)方法
?>
如何关闭notice级别的提示
1,在php.ini文件中,改动error_reporting
改为:
error_reporting = E_ALL & ~E_NOTILCE
2,在你想禁止notice错误提示的页面加入下面的代码
/*Report all errors except E_NOTICE*/
error_reporting(E_ALL^E_NOTICE);