1.PHP支持两种数组:索引数组(indexed array)和关联数组(associative array),前者使用数字作为键,后者使用字符串作为键。

  2.遍历索引数组

    2.1 for循环语句

    2.2 while循环语句

    2.3 do...while循环语句

    2.4 foreach语句

    2.5使用list()

      list()只能用于下标从0开始的索引数组,语法格式如下:

        void list(mixed $var, mixed $...)

  1. <?php
  2. $myarray=array('Kimi',5,'Angela');
  3.  
  4. list($nickname,$age,$name)=$myarray;
  5. echo $nickname.' '.$age.' '.$name;
  6. ?>

    2.6 使用each()(不明白)

    2.7 混合使用list()和each()遍历数组(不明白)

  3.遍历关联数组

    常常使用foreach语句来遍历

    下面是一个使用foreach语句遍历二维数组的例子:

  1. <?php
  2. $myarray=array(
  3. 'boy'=>array(
  4. 'name'=>'Kimi',
  5. 'age'=>4,
  6. 'nickname'=>'kimi',
  7. ),
  8. 'girl'=>array(
  9. 'name'=>'Cindy',
  10. 'age'=>5,
  11. 'nickname'=>'wind'
  12. ),
  13. );
  14. foreach($myarray as $gender_key => $gender_value){
  15. echo $gender_key.' => <br>';
  16.  
  17. foreach($gender_value as $key => $value){
  18. echo '&nbsp&nbsp'.$key.' => '.$value.'<br>'; //&nbsp似乎是增加一个空格
  19. }
  20. }
  21. ?>

  4.数组的操作

    4.1 检查数组中是否存在指定的值使用array_search()

  1. <?php
  2. $myarray=array('name'=>'Kimi','age'=>5,'hobby'=>'reading',1=>2013);
  3.  
  4. $key=array_search('Kimi',$myarray);
  5. echo '<p>'.$key;
  6.  
  7. $key=array_search(5,$myarray);
  8. echo '<p>'.$key;
  9.  
  10. $key=array_search('read',$myarray);
  11. var_dump($key);
  12.  
  13. $key=array_search(2013,$myarray);
  14. echo '<p>'.$key;
  15. ?>

    4.2 把一个或多个数组合并为一个数组使用array_merge()

       函数返回合并后的数组,如果待合并的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。如果待合并的数组中包含相同的数组键名,后面的值将不会覆盖原来的值,而是附加到该元素后面。

  1. <?php
  2. $girl=array('name'=>'Cindy','age'=>5);
  3. $boy=array('name'=>'Kimi','age'=>4);
  4. $girl_date=array(0=>2000);
  5. $boy_date=array(0=>2001);
  6.  
  7. $myarray=array_merge($girl,$boy,$girl_date,$boy_date);
  8. var_dump($myarray);
  9. ?>

    4.3 把一个数组分割为多个数组使用array_chunk()

    语法格式如下:

    array array_chunk(arrray $input, int $size [, bool $preserve_keys])

    其中,$input是分割的数组变量,$size是分割成的每个数组的元素个数(最后一个数组的元素可以小于$size),可选参数$preserve_keys默认为false,表示分割后的数组索引将从0开始重新编排。若设置为true,则分割后的数组将保留原数组中的键名。一维数组分割一次变成二维数组。

    4.4 统计数组中所有值出现的次数使用array_count_values()

    语法格式如下:

    array array_count_values( array $input)

    其中,$input是待统计的数组。该函数返回一个关联数组,其键名为$input数组中的元素的值,键值为该元素的值在$input数组中出现的次数

  1. <?php
  2. $boy=array('Kimi',5,'age'=>5,'name'=>'Kimi',2005);
  3. $counts=array_count_values($boy);
  4. print_r($counts);
  5. var_dump($counts);
  6. ?>

    4.5 计算数组中所有值的和使用array_sum()

    语法格式如下:

    number array_sum(array $array)

    4.6 删除数组中重复的值使用array_unique()

    语法格式如下:

    array array_unique(array $array)

    其中,$array是待操作的数组。该函数首先将键值作为字符串进行排序,保留第一次遇到的值所对应的键名,最后返回一个没有重复值得新数组。

    4.7 计算数组中的元素数目使用count()

    语法格式如下:

    int count( array $array [, int $mode])

    其中,$array是待计算的数组,可选参数$mode默认值为0,表示不进行递归统计元素个数,可以设置为1(或COUNT_RECURSIVE),表示递归统计元素的数目。

  1. <?php
  2. $myarray=array(
  3. 'boy'=>array('name'=>'Kimi',
  4. 'nickname'=>'K',
  5. 'age'=>5),
  6. 'girl'=>array('name'=>'Cindy',
  7. 'nickname'=>'C',
  8. 'age'=>4),
  9. );
  10.  
  11. echo '<P>不递归统计元素个数:'.count($myarray);
  12. echo '<p>递归统计元素个数:'.count($myarray,COUNT_RECURSIVE);
  13. ?>

    4.8 对数组正向排序使用sort()

    语法格式如下:

    bool sort( array &$array [, int $sort_flags])

    其中,参数$array是待排序的数组,可选参数$sort_flags可以为下面4种设置之一。

    ·SORT_REGULAR:通过正常比较进行排序(不改变类型)

    ·SORT_NUMBER:将数组元素作为数字来比较进行排序

    ·SORT_STRING:将数组元素作为字符串来比较并进行排序

    ·SORT_LOCATE_STRING:根据当前的区域(locate)设置把数组元素作为字符串比较并进行排序

    4.9 对数组逆向排序使用rsort()

    类比正向排序。

    4.10 将数组中的元素顺序翻转使用array_reverse()

    语法格式如下:

    array array_reverse( array $array [, bool $preserve_keys])

    其中,$array是待翻转的数组,可选参数$preserve_keys默认为FALSE,表示不保留原有的键名,设置为TRUE后,表示翻转数组元素时保留原有的键名。(关于可选参数,存在疑惑,见下面程序)

  1. <?php      
  2. $myarray=array('gdp'=>'GDP','ht'=>'HT','lq'=>'LQ','lc'=>'LC');
  3. $new_array=array_reverse($myarray,FALSE);//无论是FALSE还是TRUE,键名依旧未改变
  4. echo '<p>';
  5. print_r($new_array);
  6. ?>

    4.11 用给定的值填充数组使用array_pad()

    语法格式如下:

    array array_pad( array $input, int $pad_size, mixed $pad_value)

    其中,参数$input是待填充的数组,参数$pad_size是填充后数组的大小,参数$pad_value是用来填充的元素。如果$pad_size为正,填充的元素将位于$input右侧,反之亦然。

    4.12 计算多个数组的交集使用array_intersect()

    语法格式如下:

    array array_intersect( array $array1 [, array $array2 [, array $...] ] )

第六章_PHP数组的更多相关文章

  1. 第六章_PHP数组(二)

    这篇随笔是对预定义数组变量的总结.通过预定义数组变量,我们可以获得系统环境.用户对话.表单数据等信息. 1.服务器变量:$_SERVER 利用foreach语句打印$_SERVER中的所有元素: &l ...

  2. 网易云课堂_程序设计入门-C语言_第六章:数组_2鞍点

    2 鞍点(5分) 题目内容: 给定一个n*n矩阵A.矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数.一个矩阵A也可能没有鞍点. 你的任务是找出A的鞍点. 输入格 ...

  3. 网易云课堂_程序设计入门-C语言_第六章:数组_1多项式加法

    1 多项式加法(5分) 题目内容: 一个多项式可以表达为x的各次幂与系数乘积的和,比如: 现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出. 程序要处理的 ...

  4. 程序设计入门-C语言基础知识-翁恺-第六周:数组-详细笔记(六)

    目录 第六章:数组 6-1 数组 6-2 数组计算 6.3 课后习题 第六章:数组 6-1 数组 题目:让用户输入一组整数以-1结束输入,算出这组数的平均值,并且输出大于平均值的数. 我们需要记录用户 ...

  5. KnockoutJS 3.X API 第六章 组件(5) 高级应用组件加载器

    无论何时使用组件绑定或自定义元素注入组件,Knockout都将使用一个或多个组件装载器获取该组件的模板和视图模型. 组件加载器的任务是异步提供任何给定组件名称的模板/视图模型对. 本节目录 默认组件加 ...

  6. apue第六章学习总结

    apue第六章学习总结 1.关于阴影文件与口令 在口令文件当中,常见的字段有(以root为例): root(用户名):x(加密口令):0(uid):0(gid):root(注释字段):/root(用户 ...

  7. [Effective Java]第六章 枚举和注解

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. Laxcus大数据管理系统2.0(8)- 第六章 网络通信

    第六章 网络通信 Laxcus大数据管理系统网络建立在TCP/IP网络之上,从2.0版本开始,同时支持IPv4和IPv6两种网络地址.网络通信是Laxcus体系里最基础和重要的一环,为了能够利用有限的 ...

  9. C primer plus 读书笔记第六章和第七章

    这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #inclu ...

随机推荐

  1. JAVA取随机数,石头剪刀布实例

    一.取随机数: import java.util.Random; //导入随机数 public class Test{ public static void main(String[] args){ ...

  2. 如何利用jQuery进行简单表单验证

    <!DOCTYPE html><html><head><meta charset="utf-8"><meta name=&qu ...

  3. android之SeekBar控件用法

    MainActivity.java package com.example.mars_2400_seekbar; import android.support.v7.app.ActionBarActi ...

  4. Android之访问下载文件

    1.SD卡操作类 FileUtils.java package com.example.mars_1500_download; import java.io.File; import java.io. ...

  5. 不容错过错的xcode 插件 转至于cocoachina

    古人云“工欲善其事必先利其器”,打造一个强大的开发环境,是立即提升自身战斗力的绝佳途径!以下是搜集的一些有力的XCode插件.   1.全能搜索家CodePilot 2.0 你要找的是文件?是文件夹? ...

  6. 格式化日期的js(正则魅力)

      /** * 时间对象的格式化; */ Date.prototype.format = function(format) { // ◆ 使用prototype定义原型方法 /* * eg:forma ...

  7. ruby的hash学习笔记例: 将字符串文本中的单词存放在map中

    text = 'The rain in Spain falls mainly in the plain.'first = Hash.new []second = Hash.new {|hash,key ...

  8. android 列表开发 ListView

    1.android 端 二个entity consultInfo: private String name; private String id; consultInfoRef private iLi ...

  9. DimDate

    CREATE TABLE [dbo].[DimDate]( [DateKey] int NOT NULL , [FullDate] DATE NOT NULL , [MonthNumberOfYear ...

  10. nyoj 79 导弹拦截

    点击打开链接 拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发 ...