php支持两种数组,数字索引数组和关联数组。关联数组有点类似Map,可以用字符串或其他数据类型做键对应相应的值保存在数组中。

1.初始化数组

  数字索引数组的初始化可以使用如下代码:

  $products = array('Tires', 'Oil, 'Spark Plugs');

  因为数组和其他变量一样,不需要预先初始化或创建,所以下面的代码创建了和上面相同的数组:

  $products[0] = 'Tires';

  $products[1] = 'Oil';

  $products[2] = 'Spark Plugs';

  关联数组的初始化:

  $prices = array('Tires' =>100, 'Oil' =>10, 'Spark Plugs' =>4);

  也可以用$prices['Tires'] = 100这样的形式来初始化。

2.访问数组元素

  可以使用数字索引或关键字来访问数组元素:$products[0]或$prices['Tires']。

  使用循环访问数字索引数组:

        for($i=0; $i<3; $i++){
echo $products[$i]." ";
}
foreach ($products as $current) {
echo $current." ";
}

  使用循环访问关联数组:

     foreach ($prices as $key => $value) {
echo "$key - $value<br>";
}
/*
遍历数组后,数组指针在尾部,想要重新遍历数组要用reset()函数把指针重置到数组头部
*/
reset($prices);
/*
each()函数返回当前元素的数组,并将指针指向下一个元素。
$element也是一个关联数组,key和0指向当前元素的关键字,value和1指向当前元素的值。
*/
while ($element = each($prices)) {
echo $element['key'];
echo " -- ";
echo $element['value'];
echo "<br>";
} reset($prices);
/*
list()允许命名新变量,将each()返回的数组中的0,1两个元素赋给新变量
*/
while (list($product, $price) = each($prices)) {
echo "$product --- $price<br>";
}

3.数组排序

  sort()函数可以将数组进行升序排序,它的第一个参数是数组,第二个参数是可选的:SORT_REGULA(默认值), SORT_NUMERIC,SORT_STRING。

  asort()和ksort()用于关联数组排序,asort()根据每个元素值进行排序,ksort()根据关键字排序。

  实现反向排序的对应函数是rsort(), arsort()和krsort()。

  shuffle()将数组随机排序,array_reverse()给数组反向排序。

  现在为汽车零件网店做一个动态的首页,将零件的图片存在数组中,随机排序然后选出前3张,frontpage.php如下:

<?php
$pictures = array('tire.jpg', 'oil.jpg', 'spark_plug.jpg', 'saddle.jpg', 'steering_wheel.jpg');
shuffle($pictures);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>汽车配件网店</title>
</head>
<body>
<h1>汽车配件网店</h1>
<div align="center">
<table width="100%">
<tr>
<?php
for($i=0; $i<3; $i++){
echo "<td align='center'><img src='".$pictures[$i]."'/></td>";
}
?>
</tr>
</table>
</div>
</body>
</html>

4.从文件载入数组

  file()函数将整个文件载入一个数组中,文件中的每一行成为数组中的一个元素。

  explode()函数用分隔符把字符串分割成数组。

  用上述两个函数将订单查看页面重新显示一下,vieworders2.php:

<?php
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>订单查看页</title>
</head>
<body>
<h1>汽车配件网店</h1>
<h2>查看订单</h2>
<?php
$orders = file("$DOCUMENT_ROOT/../orders/orders.txt");
$orderamount = count($orders); if($orderamount == 0){
echo "<p><strong>暂时还没有订单,请稍后重试。</strong></p></body></html>";
exit;
} echo "<table border='1'>\n";
echo "<tr class='title'>
<th>Order Date</th>
<th>Tires</th>
<th>Oil</th>
<th>Spark Plugs</th>
<th>Total</th>
<th>Address</th>
</tr>"; foreach ($orders as $order) {
$line = explode("\t", $order);
$line[1] = intval($line[1]);//提取整数部分
$line[2] = intval($line[2]);
$line[3] = intval($line[3]); echo "<tr><td>".$line[0]."</td>
<td>".$line[1]."</td>
<td>".$line[2]."</td>
<td>".$line[3]."</td>
<td>".$line[4]."</td>
<td>".$line[5]."</td>
</tr>";
}
echo "</table>"
?>
</body>
</html>

  显示结果如下:

5.数组的其他操作

  array_push()将新元素添加到数组的末尾。

  array_pop()删除并返回数组末尾的元素。

  count()和sizeof()统计数组元素的个数。array_count_values(),统计每个元素出现的次数,它会返回一个关联数组,数组元素为键,值就是该元素出现的次数。

  还有很多其他操作数组的函数,需要的话可以查看API。

【自学php】第四天 - 使用数组的更多相关文章

  1. JavaSE回顾及巩固的自学之路(四)——————方法和数组,面向对象

    今天是2018.03.31,emmmmmm.好像距离上一次写Javase回顾总结已经好久好久过去,差一点就以为要停更了,哈哈哈.        其实呢,最近是真的好忙(额,这段时间觉得自己一直在学习) ...

  2. 自学Java第四章——《数组》

    4.1 数组的相关概念和名词(了解) 1.数组(array): 一组具有相同数据类型的数据的按照一定顺序排列的集合. 把有限的几个相同类型的变量使用一个名称来进行统一管理. 2.数组名: (1)这个数 ...

  3. HMM 自学教程(四)隐马尔科夫模型

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  4. 分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小

    原文:分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小 /** * Reallocates an array with a new size, and copies the co ...

  5. Android For JNI(四)——C的数组,指针长度,堆内存和栈内存,malloc,学生管理系统

    Android For JNI(四)--C的数组,指针长度,堆内存和栈内存,malloc,学生管理系统 好几天每写JNI了,现在任务也越来越重了,工作的强度有点高,还有好几个系列的博客要等着更新,几本 ...

  6. 孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数

    孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 不同类型 ...

  7. 孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成

    孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天经过反复折腾,最终基本上算 ...

  8. 孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数

    孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天打算完成的是通用的(至少目 ...

  9. 孤荷凌寒自学python第四十六天开始建构自己用起来更顺手一点的Python模块与类尝试第一天

     孤荷凌寒自学python第四十六天开始建构自己用起来更顺手一点的Python模块与类,尝试第一天 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 按上一天的规划,这是根据过去我自学其它编程语 ...

  10. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备

     孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自 ...

随机推荐

  1. 关于meta定义 和 link

    <!DOCTYPE html> <!-- HTML5 doctype 不区分大小写 --> <html lang="zh-cmn-Hans-CN"&g ...

  2. AspectJ的安装和Eclipse的AJDT插件的配置

    一.安装AspectJ:1.从http://www.eclipse.org/aspectj/downloads.php  下载AspectJ(目前发布的最新版为1.8.6);2.解压下载下来的jar文 ...

  3. Python学习笔记(五)Python的切片和迭代

    切片 Python提供了切片操作符,可以对list.tuple.字符串进行截取操作. list中的切片应用 语法如下: >>> L = ['Michael', 'Sarah', 'T ...

  4. django models 类型整理 version:1.8.3

    django models 类型整理 version:1.8.3 网上百度到的最上面的一篇已经是11年的了,django变化很大,现在把1.8.3版的models类型大致整理了下贴出来 普通键部分 F ...

  5. 混合使用Azure LB和ILB访问相同web服务(3)

    接下来我们来配置Azure Load balancer,就是面向公网的负载均衡器: 1.在该测试中,为了保持内网访问和外网访问一样的体验,本地端口和public端口和ILB一样,同样是80: PS C ...

  6. Oracle EBS-SQL (BOM-16):检查多层BOM.sql

    select rownum seq_num, lpad(to_char(level), decode(level, 1, 1, level + 1), '.') bom_level, bbm.ASSE ...

  7. SD卡在单片机上的应用

    (1)SD卡的引脚定义:  SD卡SPI模式下与单片机的连接图: 注意:SPI模式时,这些信号需要在主机端用10~100K欧的电阻上拉.      SD卡支持两种总线方式:SD方式与SPI方式.    ...

  8. 站在巨人的肩膀上,C++开源库大全

    程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列 ...

  9. 跟我开发NSP(网上查询平台):如何选择开发项目

    我想通过一个真实的项目开发的全过程,记录一下开发过程的点点滴滴,记录一下过程中的前思后想.这个全过程包括,如何选择项目.如何分析项目.如何组织项目开发.如何设计开发流程.如何设计软件的总体架构.如何建 ...

  10. 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法

    单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...