PHP入门之数组
前言
之前几篇文章分别介绍了PHP的运算符,流程控制,函数。有兴趣的可以去看看。 PHP入门之类型与运算符 PHP入门之流程控制 PHP入门之函数 接下来简单介绍一下数组。
数组初探
为什么要引进数组,因为如果有一个需求,有好几十个数据需要统计,计算,如果不用数组,那么就要定义好几十个变量,这样是不合理的。所以引进了数组的概念。 下面用一个案例入门:如果现在有6个数据,要求他们的和还有平均数。这里使用数组。 代码如下:
<?php
$sums[0]=10;
$sums[1]=11;
$sums[2]=12.6;
$sums[3]=24;
$sums[4]=56;
$sums[5]=28;
$allsums=0; #count系统函数是用来统计数组个数的。
for ($i=0;$i<count($sums);$i++){ #这里使用for循环遍历数组,也可以while循环和do while 循环,都可以。
echo '<br/>'.$sums[$i]; # 但是使用这三个循环遍历,键值不能改,默认的0、1、2等等,只能是数字
$allsums+=$sums[$i]; # 如果想自定义键值,那么就要使用foreach()来遍历数组。
}
echo '<br/>'.$allsums; #求总数
echo '<br/>'.$allsums/count($sums); #求平均数
?>
sums[0] 这个我们叫做数组的一个元素。 10 这个我们叫做sums[0]对应的值。sums 这个叫做数组的名称。 还有就是元素存放的值可以是任何数据类型。 举个例子
<?php
$arr[0]=123;
$arr[1]=34.789;
$arr[2]="hello";
for($i=0;$i<count($arr);$i++){ #可以正常输出 : 123 34.789 hello
echo '<br/>'.$arr[$i];
}
?>
第二种创建数组的方法。 举个例子
<?php
$arr=array(123,34.789,"hello");
for ($i=0;$i<count($arr);$i++){
echo '<br/>'.$arr[$i]; #可以正常输出 : 123 34.789 hello
}
?>
第三种方法创建数组的方法 举个例子:
$arr['logo']="123";
$arr['haha']=34.789;
$arr['qqq']="hello";
或者
$arr=array("logo"=>123,"haha"=>34.789,"qqq"=>"hello");
这样的话遍历就用foreach()用来遍历。
代码如下
foreach ($arr as $key=>$val){
echo "<br/>$key=$val";
}
数组中键对应的值可以修改,例子如下:
$arr=array("logo"=>123,"haha"=>34.789,"qqq"=>"hello");
$arr['logo']="lxf";
foreach ($arr as $key=>$val){
echo "<br/>$key=$val";
}
echo '<br/>'.$arr['logo'];
我们可以用print_r()
或者var_dump()
来显示这个数组。
上面的例子显示如下:
Array ( [logo] => lxf [haha] => 34.789 [qqq] => hello )
array(3) { ["logo"]=> string(3) "lxf" ["haha"]=> float(34.789) ["qqq"]=> string(5) "hello" }
如果一个数组为$arr=array(11,33,44);
我们输出 echo $arr[3];因为没有这个键值,所以会报一个错误,在php中不算致命错误,其他比如Java是致命错误, 这个错误叫数组越界。
php语言中,数组可以动态增长,举个例子。
$arr=array(4,7,9);
$arr[3]=466;
echo $arr[3];
在这个例子中,会输出466,不会报错。 与PHP数组相关的几个重要函数 (1)count函数 统计数组元素个数 (2)is_array函数 用来确定是不是数组,举个例子。
$arr=array(12,34,24);
echo is_array($arr);
#这里会返回1为真。如果
$arr=123;
echo is_array($arr);
#这里会返回空,为假。
(3)拆分字符串explode("按照什么拆分",字符串),举个例子
$str="老大,老二,老三,老四";
$arr=explode(",",$str);
print_r($arr);
输出结果为:
#由字符串变为数组了。
Array ( [0] => 老大 [1] => 老二 [2] => 老三 [3] => 老四 )
如果要删除某个元素的键-值对需要使用unset()函数,需要注意的是,删除后不会重新建立索引。举个例子:
$arr=array(1,2,5,8);
unset($arr[2]);
print_r($arr);
输出结果为: unset也可以销毁某个变量 Array ( [0] => 1 [1] => 2 [3] => 8 ) 可以同时删除多个
$arr=array(1,2,5,8);
unset($arr[2],$arr[3]);
print_r($arr);
输出结果为: Array ( [0] => 1 [1] => 2 ) 数组运算符 a 和 b 的联合。 a == b 相等 如果 a 和 b 具有相同的键/值对则为 TRUE。 a === b 全等 如果 a 和 b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。 a != b 不等 如果 a 不等于 b 则为 TRUE。 a <> a 不等于 b 则为 TRUE。 a !== b 不全等 如果 a 不全等于 b 则为 TRUE。
- 运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。
实例
要求:将输入的数据全部输出,并求平均值。
array1.php
<html>
<head>
<title>数组练习</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<h1>输入6个数据,空格隔开</h1>
<form action="array2.php" method="post">
<input type="text" name="sum">
<input type="submit" value="提交">
</form>
</body>
</html>
array2.php
<?php
$sums=$_POST['sum'];
$arr=explode(" ",$sums);
$allarr=0;
foreach ($arr as $key=>$val){
$allarr+=$val;
#遍历数组
echo '<br/>'."第"."$key"."=".$val;
}
#求总数
echo '<br/>'."总和=".$allarr;
#求平均值
echo '<br/>'."平均数=".round($allarr/count($arr),2);
?>
<br/><a href="array1.php">返回初页面</a>
下面输入13 34 67 89 89 27 结果如下图:
小结
上面对数组进行了简单的介绍,希望对大家有所帮助。
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 面试官:请算出走迷宫需要的最少步数
- lua执行redis脚本找不到脚本的问题
- Android |《看完不忘系列》之dagger
- Android | dagger细枝篇
- ES UpdateByQuery Java Api
- [Bazel]repository_rule() vs rule()
- Windows 系统信息收集姿势
- 小白学PyTorch | 3 浅谈Dataset和Dataloader
- 小白学PyTorch | 4 构建模型三要素与权重初始化
- 小白学PyTorch | 5 torchvision预训练模型与数据集全览
- 细品redis的Scan和Keys命令
- if语句与while语句
- 内网渗透 | 基于IPC的横向移动
- 【DB笔试面试866】队列等待之enq: TX - allocate ITL entry
- 【Vue.js】Vue.js组件库Element中的上传、评分、穿梭框和表单