php学习 数组课件

更新时间:2008年06月15日 12:56:49   作者:

数组是一个可以储存一组或一系列值的变量。*

数组是一种基本的数据类型。

数组函数还可以实现堆栈和队列等数据结构。

下标:数组中的识别名称 也就是字符串或整数在数组中的代号

数组中有几个索引值就被称为几维数组。

索引值:索引是对数据库表中一列或多列的值进行排序的一种结构。

数组分类

在PHP数组被分为两种:

索引数组:索引(indexed)索引值是整数,以0开始,当通过位置来标识东西时用索引数组。

关联数组:关联(associative)关联以字符串做索引值,索引值为列名,用语访问列的数据。

数组通常用赋值的方式

一般情况下数组赋值有两种方式:

$a[1]="dsadsadsa";

$b[2]="dsadsadsad";

使用array函数:

$a=array("dsads","dsadsa",321312);

一维数组:数组的索引值(下标)只有一个的时候称之为一维数组。

数组直接赋值的格式:

$数组变量名[索引值]=资料内容;

注意:索引值可以是字符串也可以是整数  但是1与“1”是不同的 它们一个属于整数一个属于字符串。

同名没有给予索引值的数组是按照顺序排列的。

实例:

$a=array(1,2,3,4,5,6);

$b=array("one", "two", "three");

$c=array(0=>"aaa",1=>"bbb",2=>"ccc");

$d=array("aaa",6=>"bbb","ccc");

$e=array("name"=>"zhang", "age"=>20);

?>

二维数组

多维数组的格式:

$a[0][]="dsadas";

$a[0][]="dsadsa";  这组是$a下的0索引值下的1和2

如果用array函数声明格式如下:

$a=array("dsadsa","dsadas",21,array("dsadsa","dsadas"));

数组的遍历

foreach循环结构:

foreach 仅用与数组的循环 两种格式

foreach(array_exprssion(数组表达) as $value);

foreach(array_exprssion(数组表达) as $key=>$value);

第一种格式遍历给定了array_exprssion数组。每一次循环中当前的值都被赋给我$calue,并且数组内部的指针向前移动一步。

第二种格式做同样的事,只除了当前单元的键值也会在每次循环中被赋给变量 $key。

当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。此外注意foreach 所操作的是指定数组的一个拷贝,而不是该数组本身

$arr=array(10,20,30,40,50,60);

foreach($arr as $k=>$v){

echo "$k=>$v
";

}

输出结果:0=>10 1=>20 2=>30 3=>40 4=>50 5=>60//下标=>整数

联合使用list(),each()和while循环

each():

$arr=array(1,2,3,4,5);

$a=each($arr);

print_r($a);

输出结果:Array ( [1] => 1 [value] => 1 [0] => 0 [key] => 0 )

拿取数组第一位的值value 下标key

list():

$arr3=array("a","b","c");

list($key,$value)=each($arr3);

echo $key."
".$value;

输出结果:0 a     list()可以说是用一步操作给一组变量赋值 仅能用于数字索引的数组并假定数字索引从 0 开始。

while循环

$arr=array(1,2,3,4,5,6,7,8,9,);

while(list($key,$value)=each($arr)){

$key++;

echo $key."=>".$value;

echo "
";

}

echo "
";

输出结果:1=>1 2=>2 3=>3 4=>4 5=>5 6=>6 7=>7 8=>8 9=>9

reset()数组指针重定向

在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。

is_array检测变量是否为数组真返回ture假false

$arr=array(1,2,3,4,5,6,"saas");

while(list($k,$v) = each($arr))

{

if(is_array($arr))

{

$x += $v;

echo $x;

}

else

{

$x += $k;

}

}

这个范例不能完全体现is_array的功能,但是可以参考。

数组的指针

next():负责将指针向后移动

prve():负责将指针向前移动

end():会将指针指向数组最后一个元素

reset():将目前指针无条件移至第一个索引位置

语法格式:mixed next(数组名称)

$arr=(array(1,2,3,4,5));

echo end($arr);

输出结果:5

key()与current()和count()

key()的函数是读取目前指针所指向的资料的索引值。

current()的函数则是读取目前指针所指向资料的内容资料。

count()的函数是用来计算数组中所有元素的个数,也就是说函数会传回目标数组的长度值。

格式:int count(数组名称);

key():从关联数组中取得键名

$array = array('fruit1' => 'apple','fruit2' => 'orange','fruit3' => 'grape','fruit4' => 'apple','fruit5' => 'apple');

while ($fruit_name = current($array)) {

if ($fruit_name == 'apple') {

echo key($array).'
';

}

next($array);

}

输出结果:fruit1,fruit4,fruit5

current():返回数组中的当前单元

$transport = array('foot', 'bike', 'car', 'plane');

$mode = current($transport); // $mode = 'foot';

$mode = next($transport);    // $mode = 'bike';

$mode = current($transport); // $mode = 'bike';

$mode = prev($transport);    // $mode = 'foot';

$mode = end($transport);     // $mode = 'plane';

$mode = current($transport); // $mode = 'plane';

注意看范例 返回数组中的当前单元

count():计算数组中单元的个数

$arr=array(1,2,3,4,5,6);

echo count($arr);

输出结果:6

array_change_key_case()

array_change_key_case返回字符串键名全为小写或者大写的数组

其中包含的形态函数有两个[CASE_UPPER]转换为大写,[CAS_LOWER]转换为小写。

$input_array = array("FirSt" => 1, "SecOnd" => 4);

print_r(array_change_key_case($input_array, CASE_UPPER));

输出结果:Array ( [FIRST] => 1 [SECOND] => 4 )

array_chunk()

array_chunk()次函数会将目标数组的资料内容,以指定索引个数,分解成数个小型数组包含在原数组中。

$arr=array(1,2,3,4,5,6);

$a=array_chunk($arr,3);

print_r($a);

输出结果:Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) )

也就是等于用数组单元个数的总和除以3

array_count_values

array_count_values  用来计算目标数组中各值出现的次数

语法格式:array_count_values(目标数组)

此函数所传回结果值,会以原数组的内容资料作为索引,以数组的形态表现。

$arr=array(1,2,3,3,2,6);

print_r(array_count_values($arr));

输出结果:Array ( [1] => 1 [2] => 2 [3] => 2 [6] => 1 )

array_fill

array_fill让使用者可以自定义数值,填满目标数组中指定的索引区段。

语法格式:array_fill(起始索引位置,区段大小,指定字元)

其中起始索引位置与区段大小必须为integer(整型)形态数值,而且区段大小指定不得为0。

$a = array_fill(5, 6, 'banana');

print_r($a);

输出结果:Array([5]  => banana[6]  => banana[7]  => banana[8]  => banana[9]  => banana[10] => banana)

array_filter

array_filter依次将目标数组中的每个值传递到使用者自定义函数。如果使用者自定义函数返回 TRUE(真

),则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

语法格式:array_filter(目标数组,使用者自定义函数)

function odd($var)

{

return($var % 2 == 1);

}

$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);

print_r(array_filter($array1, "odd"));

输出结果:Odd :Array([a] => 1[c] => 3[e] => 5)

$entry = array(0 => 'foo',1 => false,2 => -1,3 => null,4 => '');

print_r(array_filter($entry));

输出结果Array([0] =>foo[2] => -1)

其它的回调函数:array_walk (), array_map()

array_flip

array_flip将目标数组中的索引与内容值,作反相的处理,反相后的数组会以原内容值作为索引,而索引作为资料内容.

array_flip语法格式:交换数组中的键和值

array_flip(目标数组)

$trans = array("a" => 1, "b" => 1, "c" => 2);

$trans = array_flip($trans);

print_r($trans);

输出内容:Array([1] =>b[2] =>c)

如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。

array_sum

array_sum用来计算数组中所有元素值的总和。

语法格式:array_sum(目标数组)

array_unique

array_unique用来除区目标数组中重复的资料,并运算后传回新的数值。

array_keys与array_values

array_keys该函数将忽略原始的键名,使用顺序的数字对数组重新索引,针对关联数组。

array_values该函数返回一个包含数字或字符串的键名数组。返回 input 数组中所有的值并给其建立数字索引。

$arr=array("a"=>1,"b"=>2,"abc",2);

$b=array_keys($arr);

$c=array_values($arr);

输出结果:$b=Array ( [0] => a [1] => b [2] => 0 [3] => 1 )

$c=Array ( [0] => 1 [1] => 2 [2] => abc [3] => 2 )

数组的检索

对数组的检索,主要指对数组的键名或者元素值进行判断,从而确定某个数组元素的存在与否。

语法格式:bool in_array(mixed $needle, array $haystack[,bool $strict]);

$arr3=array(1,2,3,"hello","wprld");

$b=in_array("hell",$arr3,true);

var_dump($b);

$arr4=array(1,2,3,array("hello","world"));

$b=in_array(array("hello","world"),$arr4);

var_dump($b);

输出结果:bool(false) bool(true)

数组和变量之间转换

extract()和compact()函数进行数组与变量之间转换。

转换后, 数组元素的键名与变量名,以及元素的值与变量的值保持着对应的关系。

extract这个函数用于将变量从数组中倒入当前符号表中

$info = array("user_id"=>2006001,"user_name"=>"佟香玉", "position"=>"项目经理");

extract($info);

echo $user_id;

输出结果:2006001

compact()接受可变的参数数目。每个参数可以是一个包括变量名的字符串或者是一个包含变量名的数组,该数组中还可以包含其它单元内容为变量名的数组, compact() 可以递归处理。

$city  = "San Francisco";

$state = "CA";

$event = "SIGGRAPH";

$location_vars = array("city","state");

$result = compact("event","nothing_here",$location_vars);

print_r($result);

输出结果:Array ( [event] => SIGGRAPH [city] => San Francisco [state] => CA )

数组与栈

array_push()函数将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数。

array_pop()函数将数组栈的最后一个元素弹出,并将该元素返回。

范例array_push

$a=array("dsa","dsas","dfs","gfd");

array_push($a,"ssss","ddddd");

print_r($a);

输出结果:Array ( [0] => dsa [1] => dsas [2] => dfs [3] => gfd [4] => ssss [5] => ddddd )

范例array_pop弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL。

$a=array("dsa","dsas","dfs","gfd");

array_pop($a);

print_r($a);

输出结果:Array ( [0] => dsa [1] => dsas [2] => dfs )

数组与对列

队列也可以以数组的形态出现,数组中的第一个元素是对头,最后是对尾。

在对尾插入元素可以使用堆栈的方法。

从队列数组中删除对头元素可以使用array_shift函数,该函数将数组的第一个元互移出并作为结果返回, 同时,数组长度减1,并且其他元素向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不改变。

array_shift范例

$a=array("dsa","dsas","dfs","gfd");

$title=array_shift($a);

print_r($a);

输出结果:Array ( [0] => dsas [1] => dfs [2] => gfd )

可以使用array_unshift()函数在队列数组的开头插入一个或多个元素,该函数返回成功插入元素个数。

$a=array("dsa","dsas","dfs","gfd");

$title=array_unshift($a,"a",array(1,2));

print_r($a);

输出结果:Array ( [0] => a [1] => Array ( [0] => 1 [1] => 2 ) [2] => dsa [3] => dsas [4] => dfs [5] => gfd )

由结果可以看出 还可以插入数组

数组的排序

忽略键名的数组排序

sort()正

rsort()倒

usort()

$arr = array("3"=>"lemon", "2"=>"orange", "4"=>"banana", "1"=>"apple");

ksort($arr);

foreach ($arr as $key => $val) {

echo "$key = $val\n";

}

数组的计算

对数组的计算是比较方便的。最简单的计算是求数组内部的所有元素之和。也可以把数组作为一个集合处理,对两个或多个数组进行合并,计算数组间的差集或交集等。

数组的合并 合并 并不是+

范例

$arr2=array(1,2,3);

$arr3=array(3,4,5);

$a=array_merge($arr2,$arr3);

print_r($a);

输出结果:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 3 [4] => 4 [5] => 5 )

计算数组的差集

$array1 = array("a" => "green", "red", "blue", "red");

$array2 = array("b" => "green", "yellow", "red");

$result = array_diff($array1, $array2);

print_r($result);

输出结果:Array ( [1] => blue ) 差级是取前面的区别值

计算数组的交集

$array1 = array("a" => "green", "red", "blue");

$array2 = array("b" => "green", "yellow", "red");

$result = array_intersect($array1, $array2);

print_r($result);

输出结果:Array ( [a] => green [0] => red ) 交集取上下两边共同都有的

创建指定范围的数组:

range();

移除数组中重复的值:

array_unique();

逆序返回数组:

array_reverse();

数组的随机函数:随机数

srand((float) microtime()*10000000)设置随机发生器种子

array_rand();

array_shuffle();

范例

echo date("Ymd").rand(1000000,9999999)."jpg";

输出结果:200805096246795jpg 的随即数

课件为phpchina学习课件

php数组.rar

相关文章

一个目录遍历函数...2006-10-10

PHP4引用文件语句的对比...2006-10-10

一个查看session内容的函数...2006-10-10

PHP 中的 数组 实际上是一个有序映射。数组是php中应用的比较广泛2012-04-04

BBS(php & mysql)完整版(五)...2006-10-10

PHP中在数据库中保存Checkbox数据(1)...2006-10-10

我的论坛源代码(九)...2006-10-10

编写自己的php扩展函数...2006-10-10

对盗链说再见......2006-10-10

如何删除多级目录...2006-10-10

最新评论

数组对头删除php,php学习 数组课件相关推荐

  1. MongoDB 学习笔记之 从数组中删除元素和指定数组位置

    从数组中删除元素: 从数组中删除单个元素: db.ArrayTest.updateOne({ "name" : "Bill"},{$pop: {"ad ...

  2. php 从数组里删除元素,PHP从数组中删除元素的四种方法实例

    PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...

  3. java数组中删除元素或一个数组元素

    java数组中删除元素或一个数组元素 删除数组中单个元素 删除数组中多个元素(数组表示) 这里直接介绍两种情况: 1.删除数组中单个元素 2.删除数组中多个元素(数组表示) 删除数组中单个元素 1. ...

  4. PHP数组操作程序,微信小程序学习数组操作

    前言 相信在小程序推出公测之后,很多小伙伴都已经抓紧申请注册小程序了.在开发阶段中也碰到了很多的问题,例如wx.request数据请求不成功,在数组操作时,不知道如何往数组里push数据,input如 ...

  5. vue+js 从一个数组中删除在另一个数组中已存在对象;

    数组,对象常用的删除方法: 1.根据一个数组元素,删除另一个数组中的对象: var a = [{ id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 1 ...

  6. php删除数组中的空元素_PHP | 从数组中删除所有出现的元素

    php删除数组中的空元素 Given an array and we have to remove all occurrences of an element from it. 给定一个数组,我们必须 ...

  7. shell基础-04 数组(定义数组、查看数组、访问数组、删除数组、关联数组、二维数组)

    文章目录 1. 定义数组 1.1 逐个元素定义数组 1.2 定义整个数据 2. 查看数组 3. 访问数组 3.1 访问数组中的第一个元素 3.2 访问多个元素 3.3 统计数组元数的个数 3.4 获取 ...

  8. js array 删除指定元素_数组--学习笔记(数据结构数组 /js数组)

    学习目标: 了解什么是数组: 数组如何访问内存地址(一维,二维): 什么是数组 是由相同类型的元素的集合所组成的数据结构,分配一块连续的内存来存储.利用元素的索引可以计算出该元素对应的存储地址. 最简 ...

  9. php 数组课件,php学习 数组课件第1/2页

    php学习 数组课件第1/2页 2021-01-23 15:39:308 下标:数组中的识别名称也就是字符串或整数在数组中的代号 数组中有几个索引值就被称为几维数组. 索引值:索引是对数据库表中一列或 ...

最新文章

  1. Android Gradle 笔记
  2. SpringCloud实践分享-日志收集Kafka-ELK
  3. Android 自定义View消除锯齿实现图片旋转,添加边框及文字说明
  4. 2020年Q3美妆行业抖音小红书营销报告
  5. php tp3.2 去重方法,thinkPHP框架整合tcpdf插件操作示例
  6. C#递归拷贝文件夹下文件以及文件夹
  7. 每天学点Python Cookbook(三)
  8. 服务器主板测试工程师的项目,重视经验,人才紧缺—硬件测试工程师
  9. LimeSurvey 安装
  10. selenium 清空缓存
  11. react在线浏览doc_如何实现 React 中的状态自动保存?
  12. EF System.NotSupportedException
  13. 企业债和公司债的四点区别
  14. 设计并实现“恺撒密码”--简单版
  15. Chrome 浏览器如何截取整个页面
  16. 计算机病毒1000字,《大鱼海棠》观后感1000字
  17. 手机界面设计—常识篇
  18. Leetcode 变位词组
  19. c#设计模式(3)—— 利用观察者模式模拟推送消息
  20. 数据探索性分析(EDA)常用方法大合集

热门文章

  1. 在浏览器拉起应用的方式
  2. 2021中国农业银行(浙江省分信息科技岗)春招笔试编程题(待更)
  3. Unity框架——MVC框架
  4. iOS开发中拉伸图片的几种方式
  5. android系统关机广播,Android开机广播和关机广播
  6. bm24 bm25 sql 22 sql 24
  7. 解决找不到gpedit.msc文件方法
  8. 模拟IC学习笔记 Bandgap设计
  9. 【性能测试】linux服务器监控性能测试
  10. CentOS下配置apache虚拟主机