PHP数组

数组

提出一个问题:

一个养鸡场有6只鸡,他们的体重分别为3kg5kg1k个,3.4kg2kg6.kg

请问这六只鸡的总体重是多少 平均体重是多少 请你用现在掌握的技术编一个程序 

现在我们使用现有的技术来解决问题

$hen1=3;

$hen2=5;

$hen3=1;

$hen4=3.4;

$hen5=2;

$hen6=50;

如果我们的变量很多,如果我们分别取变量名,显示程序无法控制

怎么办

我们可以使用一个新的数据类型array数组,来统一管理这一组数

什么是数组

可以用于存放多个数据的数据类型

快速入门:来解决上述问题

<?php

    $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<count($hens);$i++){

       echo "".$i."只鸡体重".$hens[$i]."<br/>";

       $allWeight+=$hens[$i];

    }

       echo "共有".count($hens)."只鸡";

       echo "<br/>";

       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数组中,元素存放的值可以是任意数据类型

<?php

    $arr[0]="123";

    $arr[1]="hello";

    $arr[2]="45.2";

    $arr[3]=true;

    $arr[4]=null;//即使放入了一个null,也要占用一个空间

    //遍历一下

    for($i=0;$i<count($arr);$i++){

       echo '<br/>'.$arr[$i];

    }

    echo "数组大小".count($arr);

?>

2,创建数组的

第二种方法

基本语法

$数组名 = array(,.....);

举例说明:

<?php

    $arr = array (23, "hello", 234.1 );

    //遍历一下

    for($i = 0; $i < count ( $arr ); $i ++) {

       echo '<br/>' . $arr [$i];

    }

    echo "<br/>数组大小" . count ( $arr );

?>

3,第三种方式

(默认情况下,我们的元素下标是从0开始给你编号,但是,我们可以自己指定)

基本语法:

$arr['logo']="北京";

$arr['hsp']=123;

...

或者

$arr=array("logo"=>"北京","hsp"=>123,4=>234);

案例演示

<?php

$arr ['logo'] = "北京";

$arr ['hsp'] = "123";

 

/* for($i=0;$i<count($arr);$i++){

           echo '<br/>'.$arr[$i]; 这样遍历不行 */

 

//这个foreach使用范围更广。

foreach ( $arr as $key => $val ) {

    echo $key . "=" . $val . '<br/>';

}

?>

图解理解:

特别说明:

1,如果我们创建一个数组时,没有给某个元素指定下标,php就会自动的用目前的最大的那个下标值(整数),加上1作为该元素的下标

<?php 

$arr=array(5=>"logo",78,123.1);

//我要访问"logo"这个值

echo $arr[5].'<br/>';

echo $arr[7];

?>

2,如果我们给某个元素的下标一样,则会覆盖原来的值

<?php

   

$arr=array(5=>"logo",78,123.1);

//我要访问"logo"这个值

 

$arr[5]="yes";

echo $arr[5].'<br/>';

echo $arr[7];

?>

3,如果我们使用true falsenull作为key,则应当怎样访问

<?php

   

$arr[true]="hello";

$arr[false]="world";

$arr[null]="no!!";

echo $arr[1].'<br/>';

echo $arr[0].'<br/>';   

echo $arr[null];

echo '<br/>'.$arr[""];

 

$arr[123.3]="yuhua";

echo $arr[123].'<br/>';

?>

4,print_rvar_dump的用法。

<?php

$arr[true]="hello";

$arr[false]="world";

$arr[null]="yes";

//我们通常可以使用print_r来显示整个数组的情况

//即:Array ( [1] => hello [0] => world [] => yes )

print_r($arr);

echo "<br/><br/>";

//var_dump可以更加详细的显示数组的信息

//即:array(3) { [1]=> string(5) "hello" [0]=> string(5) "world" [""]=> string(3) "yes" }

var_dump($arr);

?>

5,访问数组时,不要越界

一维数组的引用

基本语法:

$数组名[键值];

如果你写的键值不存在,则会报告

Notice: Undefined offset

<?php

//php数组可以动态的增长

$arr=array(2,3);

$arr[4]=56;

//这里说明php数组可以动态的增长。

echo $arr[4];

?>

php数组相关的函数说明

1,count函数

基本语法:

count($数组名),可以统计该数组共有过少个元素

2,is_array

3,print_rvar_dump

4, explode使用一个字符串分割另一个字符串

此函数返回由字符串组成的数组

案例

<?php

// 示例 1

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";

$pieces = explode(" ", $pizza);

echo $pieces[0].'<br/>'; // piece1

echo $pieces[1]; // piece2

 

?>

php数组遍历的四个方法

如果使用for while  do..while要确定该数组的下标是从0开始顺序排放的

<?php

 

$color = array ('red', 'blue', 'black' );

 

//for

for($i = 0; $i < count ( $color ); $i ++) {

    echo '<br/>' . $color [$i];

}

echo "<br/>**********";

 

//while

$i = 0; //循环控制变量

while ( $i < count ( $color ) ) {

    echo '<br/>' . $color [$i];

    $i ++;

}

 

//do.. while

echo "<br/>**********";

$i = 0;

do {

    echo '<br/>' . $color [$i];

    $i ++;

} while ( $i < count ( $color ) );

 

//foreach

echo "<br/>*********";

foreach ( $color as $k => $v ) {

    echo "<br/>$k=$v";

    //echo '<br/>$k=$v'; //双引号与单引号的区别。

}

?> 

unset 使用unset函数可以销毁某个元素,也可以销毁某个变量

<?php

    $arr[0]=112;

    $arr[1]=23;

    $arr[2]="hello";

    echo "<br/>删除前********<br/>";

    echo $arr[1];

    unset($arr[1]);

    echo "<br/>删除后********";

    echo $arr[1];

    print_r($arr);

?>

数组运算符

<?php

    $a=array("a"=>"apple","b"=>"banana");

    $b=array("a"=>"pear","b"=>"tea","c"=>"cherry");

    $c=$a+$b;

    //echo '$a+$b result<br/>';

    var_dump($c);

    echo"<br/>";

    $c=$b+$a;

    //echo '$b+$a result<br/>';

    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

<html>

<head>

<meta http-equiv="content-type" content="text/html;charset=gbk2312"/>

</head>

<body>

<h1>请输入学生的成绩,用空格隔开</h1>

<form action="result.php" method="post">

<input type="text" name="grade"/>

<input type="submit" value="开始统计"/>

</form>

</body>

</html> 

result.php

<?php

    //接受用户提交的学生成绩

    $grades=$_REQUEST['grade'];

    //echo 'grade='.$grades;

    //拆分,对成绩进行分割

    $grades=explode(" ",$grades);

    $allGrades=0;

    //遍历

    foreach($grades as $k=>$v){

       echo "<br/>$k=$v";

       $allGrades+=$v;//隐藏转换 string->float

    }

    //round函数

    echo "<br/>平均成绩是=".round($allGrades/count($grades),2);

?> 

结果:

0=22
1=22
2=2
平均成绩是=15.33

深入一点:

1如何将上面2个页面整合为一个页面

2还要求平均成绩保留到小数点后两位

3如何实现下面的功能

(百度里,关键字提交,不会给你删掉,就是这个原理)

 

array12.php

<html>

<head>

<meta http-equiv="content-type" content="text/html;charset=gbk2312" />

</head>

<body>

<h1>请输入学生的成绩,用空格隔开</h1>

<?php

error_reporting ( E_ALL ^ E_NOTICE ); // 关闭notice提示

//接受用户提交的学生成绩

$grades1 = $_REQUEST ['grade'];

//echo 'grade='.$grades;

//拆分,对成绩进行分割

$grades = explode ( " ", $grades1 );

$allGrades = 0;

//遍历

foreach ( $grades as $k => $v ) {

    //echo "<br/>$k=$v";

    $allGrades += $v; //隐藏转换 string->float

}

?>

<!-- o1 提交给自己 -->

<form action="array12.php" method="post"><input type="text" name="grade" value="<?php echo $grades1?>" />

<!-- ○3这一句话就行了  -->

<input type="submit" value="开始统计" />

</form>

<?php

echo "平均成绩是=" . round ( $allGrades / count ( $grades ), 2 );

// ○2 round(,)方法

 

?>

</body>

</html>

 

如何关闭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);

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值