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. 研究 Javascript的&&和||的另类用法

    这篇文章主要介绍了Javascript的&&和||的另类用法,需要的朋友可以参考下 最近也没什么心思写文章了,感觉总有忙不完的事情,呵. 不过这些天又开始研究起 Titanium 来, ...

  2. ORACLE集合常用方法

    集合方法pl/sql预定义了在varray 和嵌套表实例上进行调用的方法.这些方法能在集合上执行一定的功能. EXISTS 该函数返回集合中第一个元素的索引,如果集合为空,返回NULL Collect ...

  3. php后台判断ajax请求

    if (isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && $_SERVER["HTTP_X_REQUESTED_WI ...

  4. 变形课--hdu1181

    变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submis ...

  5. How Many Tables(并查集)

    How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  6. C语言基础07

    结构体与函数的区别: 1.函数是由相同数据类型的变量组成. 2.结构体可以有不同数据类型组合.可以包含char,int,float,数组等类型. struct 结构名称 { 数据类型 成员:   注意 ...

  7. python socket编程学习笔记2

     server.py: [服务端步骤]: 1.创建socket对象 2.将socket绑定到指定地址(bind) 3.监听连接请求(listen) 4.等待客户请求(accept) 5.处理请求(服务 ...

  8. SQL Server 分区表的创建方法与管理

    背景知识: 分区表.可以把表中的数据按范围保存到不同的文件组中. 举个例子吧: 2014年以前的数据保存到文件组A 2014~2015的数据保存到文件组B 2015年以后的数据保存到文件组C 好处: ...

  9. ui原则

    http://www.niushe.com/news/show-3683.html 设计师Joshua Porter发表了一篇文章——<Principles of User Interface ...

  10. 10453 Make Palindrome (dp)

    Problem A Make Palindrome Input: standard input Output: standard output Time Limit: 8 seconds By def ...