陈力:传智播客古代 珍宝币 泡泡龙游戏开发第28讲:PHP数组
PHP程序设计语言中的数组如何创建,一维数组的引用,PHP数组变量,foreach语句,如何对数组进行排序等等知识都是贵阳网站建设中的主要内容。本节介绍:陈力:传智播客古代 珍宝币 泡泡龙游戏开发第28讲:PHP数组。
一、什么是数组
在贵阳网站建设中,经常需要解决一些实现的问题,比如:养鸡场有6只鸡,它们的体重分别是3kg,5kg,1kg,3.4kg,2kg,50kg。请问这六只鸡的总体重是多少?平均体重是多少? 请用当前掌握的PHP程序设计技术编一个程序求解。
现在我们使用现有的技术来解决问题,array01.php程序设计代码:
$hen1=3;
$hen2=5;
$hen3=1;
$hen4=3.4;
$hen5=2;
$hen6=50;
$zs=$hen1+$hen2+$hen3+$hen4+$hen5+$hen6
如果我们的变量很多,如果我们分别取变量名,显示程序无法控制。这也是贵阳网站建设中必须避免的问题。因此,通过使用一个新的数据类型array 数组,来统一个管理这一组数,是十分方便的。
数组:可以用于存放多个数据的数据类型,我们称为数组。
快速体验案例: 用数组来解决养鸡场的问题。
//使用数组来完成案例
$hens[0]=3;
$hens[1]=5;
$hens[2]=1;
$hens[3]=3.4;
$hens[4]=2;
$hens[5]=50;
$hens[6]=30;
$allWeight=0;
//遍历整个数组
//有时为了知道某个数组共有多少个元素,可以使用系统函数count
echo "共有".count($hens)."只鸡<br/>";
for($i=0;$i<count($hens);$i++){
echo "第".($i+1)."只鸡体重=".$hens[$i]."<br/>";
$allWeight+=$hens[$i];
}
echo '<br/>总体重是='.$allWeight.'平均体重='.$allWeight/count($hens);
注意:该案例重点说明数组基本使用,后面介绍数组的细节。
二、数组创建
在php程序设计语言中,数组就是关键字和值的集合,值是一种任何数据类型。 创建数组的方法很多,主要介绍以下几种:
(1)创建数组
$arr[0]=123;
$arr[1]=90;
$arr[2]=8;
数级在内存中的存在方式:是保存在一段边续的内存空间中。
数组中经常用到下标、元素、元素值、数组类型等概念。
[0] -> 通常称为下标,或者称为 关键字。
$arr[0] -> 这个称为数组的一个元素。
$arr[0]=123; 123 表示该$arr[0]元素对应的值。
$arr是该数组的名称。是PHP的规范的标志符。
在php数组中,元素存放的值可以是任意数据数据类型。
例子:
<?php
$arr[0]=123;
$arr[1]="hello";
$arr[2]=45.6;
$arr[3]=true;
$arr[4]=null;//即使放入了一个null,也要占一个空间
echo "数组大小".count($arr);
//遍历一下
for($i=0;$i<count($arr);$i++){
echo '<br/>'.$arr[$i];
}
?>
(2)创建数组的第二种方法
基本语法:$数组名=array(值,.......);
举例说明:
$arr=array(1,90,"helllo",89.5);
//遍历
for($i=0;$i<count($arr);$i++){
echo "<br/>".$arr[$i];
}
(3)第三种方式创建数组
在默认情况下,数组元素的下标,是从0开始给你编号,但是实际上,也可以自己指定。
基本语法:
$arr[‘logo’]=”贵阳网站建设”;
$arr[’aa’]=123;
....
或者
$arr=array(”logo”=>” 贵阳网站建设”,”aa”=>123,4=>678);
案例:
$arr[0]=123;
$arr[1]=90;
//遍历
/* for($i=0;$i<count($arr);$i++){
echo '<br/>'.$arr[$i];
}*/
//这个foreach适用范围更广
foreach($arr as $key2=>$val2){
echo $key2."=".$val2."<br/>";
}
(4)注意事项
①如果我们创建一个数组的时候,没有给某个元素指定下标,php程序设计语言会自动的用目前最大的那个个下标值(整数), 加上一作为该元素的下标(关键字)
$arr=array(5=>"logo",567,90);
//我要访问"logo"这个值
echo $arr[5];
echo "<br/>".$arr[6];
②如果我们给某个元素的下标一样,则会覆盖原来的值:
$arr=array(5=>"logo",567,90);
//我要访问"logo"这个值
$arr[5]="yes";//替换某个元素值
echo $arr[5];
echo "<br/>".$arr[6];
③如果我们使用true ,false null 作为key, 则应当怎样访问:
$arr[true]="hello"; //==> $arr[1]
$arr[false]="world";//==> $arr[0]
$arr[null]="北京";//==> $arr[null] 或者 $arr[""];
//null<==>""
echo $arr[0];
echo "<br/>".$arr[null];
//我们通常可以使用print_r来显示这个数组情况。
print_r($arr);
echo "<br/>";
//var_dump可以更加详细的显示数组的信息,包括数组名称、类型、长度、值等信息。
var_dump($arr);
④访问数组的时候,不要越界比如:
$arr=array(56,100,101);
echo $arr[2];//数组越界
echo "hello";
三、一维数组的引用
基本语法:$数组名[键值];
如果你写的键值不存在,则会报告:Notice: Undefined offset
(1)一维数组使用陷阱
$arr[bar]="hello,world";
echo $arr[bar];
这样使用时危险,贵阳网站建设的朋友千万不要这样使用。
可以正常运行。但我们不推荐这样做,原因是此代码中有一个未定义的常量(bar)而不是字符串(‘bar’-注意引号),而 PHP 可能会在以后定义此常量,这样就冲突了。它能运行,是因为 PHP 自动将字符串(没有引号的字符串且不对应于任何已知符号)转换成一个其值为该裸字符串的正常字符串。例如,如果没有常量定义为 bar,PHP 将把它替代为 'bar' 并使用之。
(2)php的数组可以动态的增长
$a=array(2,3);
//这里说明php的数组是可以动态增长。
$a[3]=56;
echo $a[3];
php数组是可以动态的增长的,这个和java的数组不一样,有点类似java中的ArrayList。
①数组可存放任意类型的数据。
②数组大小不必事先指定,可以动态增长
③数组名可以理解为指向数组首地址的引用.
④数组中的元素以 key=>value的形式存在
⑤如果没有给数组指定key,则取当前最大的整数索引值,而新的键名将是该值加1。
四、php的数组相关的函数说明
(1)count 函数
基本用法是:count($数组名); 可以统计该数组共有多少元素。
(2)is_array函数判断数组 is_array( $arr );
(3)print_r 和 var_dump【同时显示数据类型】 可以显示数组。
(4)拆分字符串 explode explode (“按照什么拆分”,字符串);
案例:
$str="贵阳&贵阳网站建设&软件设计&程序设计&毕业设计";
//在实际开发中,涉及到字符串的拆分,可以考虑
$arr=explode("&",$str);
print_r($arr);
五、php数组变量的四个方法
如果使用 for while do..while 要确定该数组的下标是从 0开始顺序排放。
$colors = array('red', 'blue', 'green', 'yellow');
//for while do_while
//for循环
for($i=0;$i<count($colors);$i++){
echo "<br/>".$colors[$i];
}
//while循环
$i=0;//循环控制变量
while($i<count($colors)){
echo "<br/>".$colors[$i];
$i++;
}
//do..while循环
$i=0;//循环控制变量
do{
echo "<br/>".$colors[$i];
$i++;
}while($i<count($colors));
//foreach循环
echo "<br/>*********";
foreach($colors as $k=>$v){
echo "<br/>$k=$v";
}
六、使用unset函数可以销毁某个元素,也可以销毁某个变量,销毁该元素后,关键字不会重新组合。
unset() 函数允许删除数组中的某个键。但要注意数组将不会重建索引。查看文档。
$arr[0]=123;
$arr[1]=456;
$arr[2]="hello";
//比如现在我要删除 $arr[1] 元素
echo "<br/>**删除前****";
echo $arr[1];
unset($arr[1]);
echo "<br/>**删除后****";
echo $arr[1];
echo print_r($arr);
七、数组运算符
php133.jpg
+运算符把右边的数组元素(除去键值与左边的数组元素相同的那些元素)附加到左边的数组后面,但是重复的键值不会被覆盖。
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; //$b数组的键和值加到$a
echo "\$a + \$b result<br/>";
var_dump($c); // "a" => "apple", "b" => "banana" "c" => "cherry"
echo "<br/>";
$c = $b + $a; //"a" => "pear", "b" => "strawberry", "c" => "cherry"
echo "\$b + \$a result <br/>";
var_dump($c);
七、数组的案例
为加强贵阳网站建设的朋友对数组的理解,我们再给出一个题,完成:在运动会上,五个小孩比赛滑轮,他们的滑完100米,分别用了10s、12s、5.7s、9s、14s,请编写一个程序,计算他们的平均时间?[array03.php] 时间保留到小数点后两位.
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<h1>请输入五个小孩的成绩,用空格隔开</h1>
<form action="result2.php" method="post">
<input type="text" name="grade"/>
<input type="submit" value="开始统计"/>
</form>
</body>
</html>
处理过程的PHP程序代码result2.php
<?php
//接收用户提交的学生的成绩!
$grades=$_REQUEST['grade'];
//echo 'grade='.$grades;
//拆分,对成绩进行分割
$grades=explode(" ",$grades);
$allGrades=0;
foreach($grades as $k=>$v){//遍历
$allGrades+=$v; //隐藏转换 string->float
}
echo "平均时间是=".$allGrades/count($grades);
?>
如果要求贵阳网站建设的朋友把两个页面合并到一起,代码如下:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<h1>请输入五个小孩的成绩,用空格隔开</h1>
<?php
error_reporting(E_ALL ^ E_NOTICE);
//接收用户提交的学生的成绩!
$grades1=$_REQUEST['grade'];
//echo 'grade='.$grades;
//拆分,对成绩进行分割
$grades=explode(" ",$grades1);
$allGrades=0;
foreach($grades as $k=>$v){//遍历
$allGrades+=$v; //隐藏转换 string->float
}
?>
<form action="array03.php" method="post">
<input type="text" name="grade" value="<?php echo $grades1;?>"/>
<input type="submit" value="开始统计"/>
</form>
<?php
echo "平均时间是=".$allGrades/count($grades);
?>
</body>
</html>
【推荐阅读】陈力:传智播客古代 珍宝币 泡泡龙游戏开发第28讲:PHP数组