第3章 使用数组

1.创建、初始化数组: $products=array(‘Tires’,’Oil’,’Spark Plugs’);

//array()和echo一样 是一个语言结果

$numbers=range(1,10,2);  //range()函数升序创建1-10的差值为2的数字数组

$letters=range(‘a’,’z’);   //range()也可对字符进行操作

2.PHP中数组的大小会根据所增加元素的多少进行动态变化;

如:$products[0]=’Tres’;   //若$products数组并不存在,此代码将创建一个只有一个元素的数组

3.循环访问数组:for();   或者 foreach();   //foreach($products as $current){ echo $current.” “; }

4.关联数组:有点像map;

- 创建: $prices=array(‘Tires’=>100,’oil’=>10);   //符号=>是关键字和值之间的连接符

$prices[‘Spark Plugs’]=4;

- 访问:$val=$prices[‘Oil’];

- 循环:① foreach($prices as $key=>$value){ echo $key.” – “.$value.”<br />”; }

②while($ele=each($prices){ echo $ele[‘key’].” – “.$ele[‘value’].”<br />”; }

③reset($prices);

while(list($product,$price)=each($prices)){ echo “$product – $price<br />”; }

//使用each()函数时,数组会记录当前元素

//使用reset()函数将当前元素重新设置到数组开始处

5.排序:

(一)升序:

①sort();   普通一维数组排序,第二个参数:SORT_REGULAR(默认) 、SORT_NUMERIC(数值) 、SORT_STRING(字符串) 指定排序类型;

②asort();   按元素值排序;

③ksort();   按关键字排序;

(二)降序:

对应:rsort()  arsort()  krsort()

(三)自定义排序:

usort($products,’compare’);

//$products是被排序的数组,compare是用户定义的排序函数 function compare(…){ … }

(四)重新排序:

①shuffle();  将数组各元素进行随机排序

②array_reverse();   返回数组的反向数组(注意:返回的是原数组修改后的副本,可以选择覆盖原版本或不覆盖)

//array_push()函数将新元素添加到数组末尾,array_pop()函数删除并返回数组末尾元素

6.其他数组操作:

①current() 返回当前元素的值(pos()函数是其别名);

②next() & each()  都使指针前移一个元素,但each()在指针前移前返回当前元素,next()则将指针前移再返回新的当前元素;

③prev()  与next()相反,将指针回移一个位置再返回新的当前元素;

④reset() & end()  前者返回指向数组首元素的指针,后者返回指向数组末尾的指针;

7.array_walk(arr,func,[userdata]);

func(value,key,userdata);

对arr的每一个元素都应用函数func,第三个参数用来传递函数func所带参数userdata;

//当希望修改数组内容时,value用按引用方式传递(&)

8.统计数组元素个数:

count() & sizeof()  统计数组中的元素个数;

array_count_values($arr);   返回一个数组,数组的关键字为$arr的元素值,数组的值为对应关键字在$arr中出现过的次数

9.提取数组元素,转换成一系列变量:

$array=array(‘key1’=>’value1’,’key2’=>’value2’);

extract($array);

echo “$key1 $key2”;  //将数组关键字转成变量名,关键字对应值作为转换后的变量值

将输出:value1 value2 value3

* 该函数还有两个可选参数extract_type和prefix,extract_type告诉extract()如何处理冲突

最常用的值是:EXTR_OVERWRITE(默认值,冲突时覆盖已有变量)、

EXTR_PREFIX_ALL(在所有变量名称前加上由prefix参数指定的值);

如:

$array=array(‘key1’=>’value1’,’key2’=>’value2’);

extract($array,EXTR_PREFIX_ALL,’my_prefix’);

echo “$my_prefix_key1 $my_prefix_key2”;

时间: 2024-08-26 23:48:36

第3章 使用数组的相关文章

perl5 第九章 关联数组/哈希表

第九章 关联数组/哈希表 by flamephoenix 一.数组变量的限制二.定义三.访问关联数组的元素四.增加元素五.创建关联数组六.从数组变量复制到关联数组七.元素的增删八.列出数组的索引和值九.用关联数组循环十.用关联数组创建数据结构  1.(单)链表  2.结构  3.树 一.数组变量的限制    在前面讲的数组变量中,可以通过下标访问其中的元素.例如,下列语句访问数组@array的第三个元素:    $scalar = $array[2];    虽然数组很有用,但它们有一个显著缺陷

第六章 Shell数组应用

目录 第六章 Shell数组应用 1. 数组基本概述 2. 数组基本使用 3. 数组遍历与循环 第六章 Shell数组应用 1. 数组基本概述 01. 什么是数组? 数组其实也算是变量,传统的变量只能存储一个值,但数组可以存储多个值. 02. 数组的分类 Shell数组分为普通数组和关联数组.普通数组:只能使用整数作为数组索引.关联数组:可以使用字符串作为数组索引. 2. 数组基本使用 01. 普通数组仅能使用整数来作为索引 #普通数组赋值方式 1.方式一:针对每个索引进行赋值 [[email 

第三章 使用数组(1)

学习重点: 数字索引数组 非数字索引数组 数组操作符 多维数组 数组排序 数组函数 在第一章和第二章,我使用的变量是标量变量 (只能存储单个数值).而数组可以具有许多个元素.PHP只吃数字索引数组和关联数组. 关联数组允许使用更有意义的数据作为索引.每个元素除了可以使用数字索引外,还可以使用字符串或其他更有意义的信息作为索引. 数组:一个用来存储一系列变量值的命名区域.—— 标量变量:一个用来存储数值的命名区域. 数字索引数组 初始化:建立一个简单的数组,示例:$products = array

[Effective JavaScript 笔记]第5章:数组和字典--个人总结

前言 这节里其实一直都在讨论对象这个在js中的万能的数据结构.对象可以表式为多种的形式,表示为字典和数组之间的区别.更多的我觉得这章讨论多的是一些对应实现功能的相关操作,有可能出现的bug以及如何避免来修复这些bug.比如下面会说到的for...in枚举属性的操作,可能因为对原型的一些操作,最终造成数据对象的操作的破坏.对于属性顺序有要求的如何处理,对类数组如何处理等.下面再一起一条一条回顾一下,这章里的主要内容.我觉得没必要讲的会一语带过,相比前面的几章,个人觉得这章的内容重点很少,注意几点就

第三章 使用数组(2)

多维数组 二维数组:相当于1个矩阵,或者一个具有宽度和高度 或者行和列 的网格.例如:这个图用一个二维数组保存Bob的产品,每一行代表一种产品(product), 每一列代表产品的属性(product attribute). PHP代码实现: //create a two-dimensional array $products2 = array(array('TIR','Tires',100), array('OIL','Oil',10), array('SPK','Spark Plugs',4

深入理解计算机操作系统——第3章:数组,异质的数据结构,指针

3.8 数组的分配和访问 (1)基本原则: int A[10] 首先,它在存储器中分配一个sizeof(int)*10字节的连续区域. 其次,它引入了标识符A.可以用A作为指向数组开头的指针.

04747_Java语言程序设计(一)_第4章_数组和字符串

例4.1小应用程序先声明一个数组a,在方法init()中创建它,指定有5个元素,然后为数组元素逐一赋值.在方法paint()中输出数组各元素的值. import java.applet.*;import java.awt.*; public class Example4_1 extends Applet { int a[];//标识符ua能引用元素类型是int的数组 public void init() { a=new int[5];//创建一个含5个元素的数组,并让a引用它 a[0]=100;

C Primer Plus_第10章_数组和指针_编程练习

1. /*rain.c 针对若干年的降水量数据,计算年降水总量.年降水平均量,以及月降水平均量*/ #include <stdio.h> #define MONTHS 12 #define YEARS 5 int main (void) { //把数组初始化为2000到2004年的降水量数据 const float rain[YEARS][MONTHS] = //const声明和初始化数组可保护数据 { {4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4,

第六章:数组、指针、与字符串

主要内容: 1.数组 2.指针 3.动态存储分配 4.指针与数组 5.指针与函数 6.字符串 内存地址: 1.内存地址的访问方式 通过变量名访问 通过地址访问 2.& var; //表示var在内存中的起始地址 void类型的指针就相当于一个hook(钩子),可以指向任何数据类型. 1.const 数据类型 * ptr //指向常量的指针 常量指针不可以改变所指对象的值,但是可以指向另外的对象(ptr本身可以改变). 2.数据类型 * const ptr //指针常量 指针本身不能改变,只能指向

第五章:数组 结构体 和联合体

1.结构体 2.联合体 3.结构体和联合体的操作 4.非压缩数组 5.压缩数组 6.数组操作 7.数组foreache 循环 8.用于数组的特殊系统函数 结构体 1.结构体成员可以是任何数据类型 包括基本类型和用户自定义类型 2.结构体的声明 var/wire 都可以定义为结构体类型.当定义为结构体类型时,结构体中的成员都必须是四态类型,成员不能是wire类型. 3.结构体的初始化 用值列表方式初始化 '{} 4.结构体的赋值 5.压缩结构体 可以视为独立的变量,具体与向量类似的操作 6.非压缩