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来举例
[0] 这个我们叫下标或者关键字。
$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 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE。
$a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。
$a != $b 不等 如果 $a 不等于 $b 则为 TRUE。
$a <> $b 不等 如果 $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入门之数组的更多相关文章
- Swift语法基础入门二(数组, 字典, 字符串)
Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...
- Numpy入门 - 生成数组
今天是Numpy入门系列教程第一讲,首先是安装Numpy: $ pip install numpy numpy是高性能科学计算和数据分析的基础包,本节主要介绍生成连续二维数组.随机二维数组和自定义二维 ...
- java基础(1)IntelliJ IDEA入门和数组操作 解决idea启动速度慢--配置JVM
一. IntelliJ IDEA入门 1 快捷键和技巧 智能补全代码,比如只写首字母按回车: psvm+Enter :public stactic void main(String[] args) s ...
- JavaScript入门之数组:Array类型详解
数组应该是每个语言中都用得极度频繁的数据类型,JavaScript也不例外. 个人认为,Js中的Array类型非常强大. 首先没有C/C++等语言需要在数组初始化时指定数组长度(并不可变)的要求. 也 ...
- Javascript入门(五)数组操作、循环语句
一.数组与数组操作 <script type="text/javascript"> //数组定义方式 var list1 = new Array(1,2,3); var ...
- 小学生都看得懂的C语言入门(4): 数组与函数
// 之前判断素数, 只需要到sqrt(x)即可,//更加简单的, 判断能够比已知的小于x的素数整除, 运行更快 #include <stdio.h> // 之前判断素数, 只需要到sqr ...
- 小学生都看得懂的C语言入门(3): 数组与函数
#include <stdio.h> int main() { int x; ; ; scanf("%d",&x){ sum+=x; cnt++; scanf( ...
- Shell - 简明Shell入门07 - 数组(Array)
示例脚本及注释 #!/bin/bash test0=() # 定义数组 test1=(a b c d e f) # 定义数组 test2=( # 定义数组 'A?' "BB!" C ...
- GO入门——4. 数组、切片与map
1. 数组 定义数组的格式:var [n],n>=0 数组长度也是类型的一部分,因此具有不同长度的数组为不同类型 注意区分指向数组的指针和指针数组 //数组的指针 a := [2]int{1, ...
随机推荐
- Mysql基础(四):库、表、记录的详细操作、单表查询
目录 数据库03 /库.表.记录的详细操作.单表查询 1. 库的详细操作 3. 表的详细操作 4. 行(记录)的详细操作 5. 单表查询 数据库03 /库.表.记录的详细操作.单表查询 1. 库的详细 ...
- Angular 懒加载找不到模块问题解决方法
问题: 懒加载无法找到模块 解决办法: 在app-routing.module.ts中引入该模块
- HTML学习分享(一)
HTML学习小结(一) 1.css的全称是什么? 2.样式表的组成 3.浏览器读取编译css的顺序? (1)HTML基本选择器 1.通配符选择器 * { margin: 0; padding: 0; ...
- easyUI时间控件
##=============================JSP======================================<div class="labelw l ...
- 机房vscode使用方法
问题 众所周知,机房中的电脑有一个win7系统,(非常的好,摆脱linux了),同时win7上有一个 vscode ,更好了. 但是!vscode 由于老师不允许联网,导致插件无法安装,更为恶心的事, ...
- 题解 洛谷 P5163 【WD与地图】
首先将操作倒序,把删边转化为加边.先考虑若边是无向边,条件为连通,要怎么处理. 可以用并查集来维护连通性,对每个连通块维护一颗权值线段树,连通块的合并用线段树合并来实现,线段树同时也支持了修改点权. ...
- luoguP1036 选数 暴力AC题解
luoguP1036 选数 暴力AC题解(非正解) 俗话说得好:暴力出奇迹,打表拿省一. 对于一些暴力就能拿分的题,暴力就好啦QWQ 题目描述 输入格式 输出格式 输入输出样例 定义变量 我们令输 ...
- UUID字符串使用
UUID字符串使用 1.可以生成唯一的字符串标示,在发送请求中可能会用到 function uuid(num) { var s = []; var hexDigits = "01234567 ...
- stm32-HAL库串口收发
串口发送 重写fputc函数 /* 优点 直接使用printf函数,发送数据长度无限制,不需要额外的数组空间 缺点 只能对应一个串口,暂时没想到解决方案 */ //头文件中要包含 stdio.h 然后 ...
- Spark 3.0 新特性 之 自适应查询与分区动态裁剪
Spark憋了一年半的大招后,发布了3.0版本,新特性主要与Spark SQL和Python相关.这也恰恰说明了大数据方向的两大核心:BI与AI.下面是本次发布的主要特性,包括性能.API.生态升级. ...