PHP之路 PHP基础【第四篇】数组

数组的分类

在PHP中有两种数组:索引数组和关联数组。
	索引(indexed)数组的索引值是整数,以0开始。当通过位置来标识东西时用索引数组。
	关联(associative)数组以字符串做为索引值,关联数组更像操作表。索引值为列名,用于访问列的数据

数组的定义

直接赋值

php
header("Content-Type: text/html;charset=utf-8");

//数组的定义方式之一:直接赋值方式

//通过指定数组下标来定义索引式数组
$a[0]=10;
$a[1]=20;
$a[2]=30;
$a[5]=40; //php的数组下标可以不连续
$a[2]=60; //下标重复称修改值

print_r($a);
//Array ( [0] => 10 [1] => 20 [2] => 60 [5] => 40 ) 
echo "
"; //不指定数组下标来去定义数组(默认数组下标从0开始自增)索引式数组。 $b[]=10; $b[]=20; $b[10]=40; $b[]=30; //不指定数组下标时,数组的下标值默认最大值加1。 print_r($b); //Array ( [0] => 10 [1] => 20 [10] => 40 [11] => 30 ) echo "
"; //关联数组的直接赋值 $stu['name']="张三"; $stu['sex']="男"; $stu['age']=20; $stu[]=100; //默认下标从0开始 print_r($stu); //Array ( [name] => 张三 [sex] => 男 [age] => 20 [0] => 100 ) echo "
"; //循环1到10的值,并放到一个数组c中 for($i=1;$i<=10;$i++){ $c[]=$i; } print_r($c);
View Code

PHP之路 PHP基础【第四篇】数组_第1张图片

array()

php
header("Content-Type: text/html;charset=utf-8");
//使用array()语言结构定义数组

//1. 使用array()不指定下标方式定义一个索引式数组
$a = array(10,20,30,40);
print_r($a);

echo "
"; //2. 使用array()指定下标来定义一个索引式数组 $b = array(0=>10,1=>20,2=>30,3=>40); print_r($b); echo "
"; //3. 使用array()定义关联式数组 $stu = array("name"=>"张三","sex"=>"男","age"=>20); print_r($stu);
View Code
php
//数组的定义:使用array()语言结构定义数组

//真实网站中的数据格式
$list = array(
            array("name"=>"诺基亚8100","price"=>1280.00,"num"=>20),
            array("name"=>"三星n8","price"=>2200.00,"num"=>30),
            array("name"=>"苹果6","price"=>5288.00,"num"=>10),
        );
echo "
";
print_r($list);

/*
//使用array定义多维数组
$a =array(
       0=>array(10,20,30),
       1=>array(40,50,60)
    );
echo "
";
print_r($a);
echo $a[0][1]; //20;
echo $a[1][1]; //50
echo $a[1][2]; //60
*/

/*
//使用array不指定下标定义一个默认下标的索引式数组。
$a = array(10,20,30,40,50);

//使用array自定索引式下标定义数组。
$b = array(0=>10,1=>20,2=>30);

//使用array定义一个关联式数组。
$c = array("a"=>"AA","b"=>"BB","c"=>"CC");
*/
View Code

PHP之路 PHP基础【第四篇】数组_第2张图片

快捷方式

php
header("Content-Type: text/html;charset=utf-8");
//第三种定义数组方式:使用快捷方式

//不指定下标定义数组
$a=[10,20,30,40];
print_r($a);

echo "
"; //指定下标定义数组 $stu = ['name'=>'zhangsan','sex'=>'man','age'=>20]; print_r($stu);
View Code

PHP之路 PHP基础【第四篇】数组_第3张图片

数组遍历

for循环 

php
header("Content-Type: text/html;charset=utf-8");

//数组的遍历方式1:使用for循环
 //其中遍历也叫迭代,就是循环一遍,一个不漏地访问一遍。
 
 $a = array(10,20,30,40,50);
 
 //使用count获取数组长度
 echo "数组长度:".count($a)."
"; //使用for循环遍历 for($i=0,$w=count($a);$i<$w;$i++){ echo $a[$i]." "; //输出下标对应的数组值 }
View Code

PHP之路 PHP基础【第四篇】数组_第4张图片

foreach

php
header("Content-Type: text/html;charset=utf-8");

//使用foreach()对数组的遍历。

$a=array(10,20,30,6=>40,50);

//不带下标的数组遍历输出
foreach($a as $v){
    echo $v." ";
}

echo "
"; //带下标的数组遍历输出 foreach($a as $k=>$v){ echo $k."=>".$v."
"; } $arr=array("one"=>"aaa", "two"=>"bbb", "three"=>"cccc"); while($sz=each($arr)){ //echo $sz[0]."===>".$sz[1]."
";
echo $sz["key"]."===>".$sz["value"]."
"; }
View Code

 PHP之路 PHP基础【第四篇】数组_第5张图片

超全局数组

$GLOBALS 包含以下所有信息
$_SERVER 服务器和执行环境信息
$_GET  通过 URL 参数传递给当前脚本的变量的数组。 
$_POST 通过 HTTP POST 方法传递给当前脚本的变量的数组。
$_FILES 保存文件上传信息(在文件处理章节中细讲)
(cookie和session在会话跟踪章节中细讲)
$_COOKIE 通过 HTTP Cookies 方式传递给当前脚本的变量的数组(用于储存论坛、文库、博客等登陆信息)
$_SESSION 当前脚本可用 SESSION 变量的数组。(用于网站购物车等的信息存储)
$_REQUEST 包含get、post和cookie
$_ENV 存储的是系统环境变量信息

 $_SERVER["HTTP_REFERER"]--上一页面的url地址
 $_SERVER["SERVER_NAME"]--服务器的主机名
 $_SERVER["SERVER_ADDR"]--服务器端的IP地址
 $_SERVER["SERVER_PORT"]--服务器端的端口
 $_SERVER["REMOTE_ADDR"]--客户端的IP
 $_SERVER["DOCUMENT_ROOT"]--服务器的web目录路径
 $_SERVER["REQUEST_URI"];//--URL地址
 echo $_GET["name"];
 echo $_REQUEST["name"]; //获取信息比上面get的会慢一些

 form表单的get提交方式:url地址可见,相对不安全,长度受限,可以做为标签连接使用。
 form表单的post提交方式:url地址不可见,相对安全,长度不受限。

 

";
echo "客户端的浏览器信息:".$_SERVER['HTTP_USER_AGENT']."
"; echo "服务器端的IP地址:".$_SERVER['SERVER_ADDR']."
"; echo "WEB根目录:".$_SERVER['DOCUMENT_ROOT']."
"; echo "当前URL地址:".$_SERVER['REQUEST_URI']."
"; echo "
";
print_r($_SERVER);
echo "
";

PHP之路 PHP基础【第四篇】数组_第6张图片



    
        
        我的HTML文档
    
    
        

form表单get提交

姓名:

年龄:



form表单post提交

姓名:

年龄:

form.html
php
header("Content-Type: text/html;charset=utf-8");
//超全局数组:$_ENV,$_GET,$_POST,$_REQUEST;

//print_r($_ENV); //在php5.2.6可用

echo "_GET获取信息:
"; echo "姓名:".$_GET['name']."
"; echo "年龄:".$_GET['age']."
"; echo "
"; echo "_POST获取信息:
"; echo "姓名:".$_POST['name']."
"; echo "年龄:".$_POST['age']."
"; echo "
"; echo "_REQUEST获取信息:
"; echo "姓名:".$_REQUEST['name']."
"; echo "年龄:".$_REQUEST['age']."
"; echo "
"; echo "

GLOBALS信息

"; echo "
";
print_r($GLOBALS);
1.php

PHP之路 PHP基础【第四篇】数组_第7张图片

 

PHP之路 PHP基础【第四篇】数组_第8张图片

 

 

PHP之路 PHP基础【第四篇】数组_第9张图片

PHP之路 PHP基础【第四篇】数组_第10张图片

数组的相关函数 

数组的键和值 

array_values — 返回数组中所有的值
array_keys — 返回数组中所有的键名
array_flip — 交换数组中的键和值
in_array — 检查数组中是否存在某个值
array_reverse — 返回一个单元顺序相反的数组
is_array() --判断是否是数组

PHP之路 PHP基础【第四篇】数组_第11张图片

数组的统计

count -- 计算数组中的单元数目或对象中的属性个数
array_count_values -- 统计数组中所有的值出现的次数
array_unique -- 移除数组中重复的值

PHP之路 PHP基础【第四篇】数组_第12张图片

带回调函数

array_filter --  用回调函数过滤数组中的单元 	
array_walk -- 对数组中的每个成员应用用户函数
array_map --  将回调函数作用到给定数组的单元上 

PHP之路 PHP基础【第四篇】数组_第13张图片

排序  

sort -- 对数组排序(升序)
rsort -- 对数组逆向排序(降序)
asort -- 对数组进行排序并保持索引关系(关联数组排序)
arsort --  对数组进行逆向排序并保持索引关系 
usort --  使用用户自定义的比较函数对数组中的值进行排序
uasort --  使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
ksort -- 对数组按照键名排序
krsort -- 对数组按照键名逆向排序
uksort --  使用用户自定义的比较函数对数组中的键名进行排序
natsort --  用“自然排序”算法对数组排序
natcasesort --  用“自然排序”算法对数组进行不区分大小写字母的排序 
array_multisort -- 对多个数组或多维数组进行排序(了解)

array_slice -- 从数组中取出一段
array_splice --  把数组中的一部分去掉并用其它值取代 
array_combine --  创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 
array_merge -- 合并一个或多个数组
array_intersect -- 计算数组的交集
array_diff -- 计算数组的差集

  

php
//php数组的排序:--普通排序

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

echo "排序前:";
print_r($a);

//sort($a); //升序, 重组数组下标。
//rsort($a); //降序, 重组数组下标。

//asort($a); //升序, 保持原有数组下标。
arsort($a); //降序, 保持原有数组下标。

echo "
"; echo "排序后:"; print_r($a);
普通排序
php
//php数组的排序:-- 自定义排序

$list = array(
            array("name"=>"zhangsan","age"=>20),
            array("name"=>"lisi","age"=>22),
            array("name"=>"wangwu","age"=>21),
            array("name"=>"zhaoliu","age"=>24),
            array("name"=>"tianqi","age"=>19),
       );
echo "
";
echo "排序前:";
print_r($list);

//自定义排序(按年龄从大到小排序)
usort($list,function($v1,$v2){
                if($v1['age']<$v2['age']){
                    return 1;
                }else{
                    return -1;
                }
            });


echo "
"; echo "排序后:"; print_r($list);
自定义排序
php
//数组的提取,拆分和组合操作
/*
    array_slice -- 从数组中取出一段
    array_splice --  把数组中的一部分去掉并用其它值取代 
    array_combine --  创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 
    *array_merge -- 合并一个或多个数组
*/

$a = array("a"=>"AA","b"=>"BB","c"=>"CC","d"=>"DD","e"=>"EE");

//要求从上面数组中取出 BB CC 和DD单元
$b = array_slice($a,1,3);

print_r($b);

echo "
"; //将上面a数组中的BB,CC 单元换成 10,20,30。 $b = array_splice($a,1,2,array(10,20,30)); echo "替换后:"; print_r($a); echo "
"; echo "换掉的内容:"; print_r($b);
提取,拆分和组合
php
//数组的提取,拆分和组合操作
/*
    array_slice -- 从数组中取出一段
    array_splice --  把数组中的一部分去掉并用其它值取代 
    array_combine --  创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 
    *array_merge -- 合并一个或多个数组
*/
//合并数组
$a=array("a","b","c");
$b=array(100,200,300);

//使用array_combine()合并出一个新数组
$c = array_combine($a,$b); //注意:a和b参数数组长度必须一致
//将a参数作为键,将b数组参数作为值合并出一个新数组
print_r($c);

echo "
"; //使用array_merge 合并数组 $c = array_merge($a,$b); //将参数数组首尾相连合并出新数组 print_r($c);
提取,拆分和组合2
php
//数组的交集和差集
$a=array(10,20,30,40,50,60);
$b=array(30,50,60,70,80);

//计算数组a和b的交集
$c = array_intersect($a,$b);
print_r($c);

echo "
"; //计算数组a和b的差集 $c = array_diff($a,$b);//找出a数组中有的,b数组中没有的。 print_r($c);
交集和差集

 

  

  

 

 

  

  

  

 

 

 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/hyit/articles/11624081.html

你可能感兴趣的:(PHP之路 PHP基础【第四篇】数组)