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. ORACLE CHECK CONSTRAINT使用示例(转载) .

    看下面的例子: CREATE TABLE temp (age NUMBER(3)); ALTER TABLE temp ADD CONSTRAINT ck_temp_age CHECK     ((A ...

  2. php 邮件类

    编写一个用php socket 发送邮件的类,简单好用,当用到php程序发送邮件时, 而在163服务器中,可以在RCPT命令中还可以验证163邮箱是否存在,还有很多用处, 我现在暂时还没想到. 记录下 ...

  3. Application值传递。

    1.layout下面的布局 activity_main.xml <?xml version="1.0" encoding="utf-8"?> < ...

  4. CSS 总结

    CSS 积累总结 1. ::Selection 选择器 使被选中的文本成为灰色: ::selection { color:#CCC; background:red; --- 选中背景颜色变成红色 } ...

  5. VirtualBox 上安装CentOS 6.5

    目标:1.在VirtualBox中安装CentOS2.配置虚拟机网络,实现:    a.主机联网后,宿机能够通过主机上网    b.不管主机联网与否,主机都能SSH登录宿机,并且主宿机能互相传送文件 ...

  6. 谈谈我对Java中CallBack的理解

    谈谈我对Java中CallBack的理解 http://www.cnblogs.com/codingmyworld/archive/2011/07/22/2113514.html CallBack是回 ...

  7. 77个常用Linux命令和工具

    77个常用Linux命令和工具 Linux管理员不能单靠GUI图形界面吃饭.这就是我们编辑这篇最实用Linux命令手册的原因.这个指南是特别为Linux管理员和系统管理员 设计的,汇集了最有用的一些工 ...

  8. Android_Layout_xml布局

    本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/11840079 1.构建xml布局文件 使用android提供的xml ...

  9. Android中绘制圆角矩形图片及任意形状图片

    圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为它避开了直角的生硬,带来更好的用户体验,下面是几个设计的例子: 下面在Android中实现将普通的矩形图片绘制成圆角 ...

  10. CentOS 安装nload(流量统计)

    yum install gcc gcc-c++ ncurses-devel wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz tar ...