php数组的使用方法详解

 更新时间:2016年11月25日 17:11  点击:1617

一、什么是数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:键和值。
二、声明数据
在PHP中声明数组的方式主要有两种:
一是应用array()函数声明数组,
一是直接为数组元素赋值。飞飞Asp!技术乐园
<1>array()函数声明的数组的方式array([mixed...]) 参数mixed的语法为key=>value
如,

<?php教程
$array=array("1"=>"编","2"=>"程","3"=>"词","4"=>"典");
print_r($array);
echo "<br>";
echo $array[1]; //注意:下标默认是从0开始
echo $array[2];
echo $array[3];
echo $array[4];
?>

<2>直接为数组元素赋值。
如果在创建数组时不知所创建数组的大小,或在实际编写程序时数组的大小可能发生变化,采用这种数组创建的方法较好。
如,

<?php
$array[1]="I";
$array[2]="love";
$array[3]="PHP";
print_r($array); //输出所创建数组的结构
?>

三、数组的类型
PHP支持两种数组:索引数组(indexed array)和联合数组(associative array),前者使用数字作为键,后者使用字符串作为键。
四、输出数组
在PHP中对数组元素输出,可以通过echo和print语句来实现,但这只能对数组中某一元素进行输出;要将数组结构输出则要使用print_r()函数,其语法:print_r(mixed expression),参数expression为普通的整形、字符型或实型变量则输出该变量本身,如果该参数为数组,则按一定键值和元素的顺序显示出该数组中的所有元素。
五、数组的构造
一维数组:
当一个数组的元素是变量时,则称其为一维数组。飞飞As.p技术乐园
声明一位数组: 类型说明符 数组名[常量表达式];
二维数组:
当一个数组的元素是一个一位数组时,则称之为二维数组。
如,

<?php
$str = array (
"网络编程语言"=>array ("PHP","JSP","ASP"),
"体育项目"=>array ("m"=>"足球","n"=>"篮球"));
print_r ( $str) ;
?>

六、遍历数组
遍历数组中的所有元素是常用的一种操作,在遍历的过程中可以完成查询或其他功能。在PHP中遍历数组的方法有多种,下面介绍最常用的两种方法。
<1>使用foreach结构遍历数组;
<2>使用list()函数遍历数组,list()函数仅能用于数字索引的数组,且数字索引从0开始。
例:综合使用list()和each()认证用户登录:

<?php
//输出用户登录信息
while(list($name,$value)=each($_POST)){
if($name!="submit"){
echo "$name=$value<br>";
}
}
?>

七、统计数组元素个数
在PHP中,使用count()函数对数组中的元素个数进行统计,语法为:int coun(mixed array[,int mode]),其中参数array为必要参数,mode为可选参数,若选中COUNT——RECURSIVE(或1),本函数将递归地对数组数组。如,

<?php
$array = array("php" => array("PHP函数参考大全","PHP程序开发范例宝典","PHP数据库教程系统开发完全手册"),
"asp教程" => array("ASP经验技巧宝典")
); //声明一个二维数组
echo count($array,COUNT_RECURSIVE);//递归统计数组元素的个数,运行结果为6
?>

八、数组排序

<1>使用sort()和rsort()分别对数组进行升序和降序,如,
<?php
$array=array(5,26,37,18,9,42,88,66);
$array1=sort($array);
for($i=0;$i<count($array);$i++){
echo $array[$i]." ";
}
echo "<br>";
$array1=rsort($array);
for($i=0;$i<count($array);$i++){
echo $array[$i]." ";
}
?>

运行结果:
5 9 18 26 37 42 66 88
88 66 42 37 26 18 9 5
<2>使用ksort()和asort()对关联数组排序
如果使用了相关数组,在排序后还要保持关键字和值的排序一致,这是就需要使用ksort()和asort()函
数,如,

<?php
$array=array('php'=>1,'jsp教程'=>2,'asp'=>3);
ksort($array);
print_r($array);
echo "<br>";
asort($array);
print_r($array);
?>
运行结果:
Array ( [asp] => 3 [jsp] => 2 [php] => 1 )
Array ( [php] => 1 [jsp] => 2 [asp] => 3 )


array("key"=>"value");建立数组

  //显示数组

  print_r($array);

  //使用compact()函数新建数组,并把参数做为新数组的单元;

  $newArray = compact("red","green","yellow","blue","array");

  //使用extract()函数把数组中的单元转换为变量

  extract($exArray);

  echo "$key1 $key2 $key3 $key4 $key5";

  ※检查值、键

  array_key_exists($key,$array);//检查数组键

  in_array($value,$array);//检查值于数组

  ※获取值

  //使用array_values()取得数组的值

  $carValues = array_values($car);

  //取出数组的键名

  $twoKeys = array_keys($two);

  key($array);//输出当前单元的键名

  //数组定义后,使用current()取得当前单元的值

  $red = current($array);

  list($red,$green) = $array;//把数组中的值赋与变量,$array = array("红色","绿色");

  each($two);//返回数组中当前单元的键和值

  ※遍历数组

  foreach($two as $subArray);//遍历数组

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

  echo "$key=>$value,";//使用each遍历数组

  }

  ※填充数组

  //向左、右填充数组

  array_pad($array,+3,"shuzhi");//2参数为正从左往右填充,数值大于单元数时才填充

  $array1 = array_fill(5,5,"test");//使用array_fill()填充这个数组的值,值为test,从第5个单元开始填充,一共填充5个单元

  //填充数组键名

  $keys = array('string', 5, 10, 'str');

  $array3 = array_fill_keys($keys,"数组值");

  //使用array_filp()函数交换键名与值

  $speed = array_flip($speed);

  //使用array_splice()函数替换第6个单元的值为7

  $output = array_splice($input,6,0,7);

  //使用array_splice()函数删除数组单元,只保留前5个单元

  $output = array_splice($input,5);

  $array1 = range(10,100,10); //使用range()函数的第三个参数,设置单元之间的步进值

  ※排序

  shuffle($array);//将数组顺序打乱

  //使用array_multisort()对三个数组排序

  array_multisort($sort1,$sort2,$sort3);

  //把这个数组进行排序,并保持索引关系

  asort($array);

  //把测试数组进行逆向排序,并保持索引关系

  arsort($array);

  //使用ksort()对数组按键名排序

  ksort($array);

  //使用krsort()函数按键名逆向排序

  krsort($array);

  //使用sort()对测试数组进行排序[以键名排列]

  sort($array);

  //使用natsort()排序[自然排序,以数值排列]对单元数值大小写敏感

  natsort($array);

  //使用natcasesort()函数排序[自然排序]但是忽略数值大小写

  natcasesort($array);

  //使用array_reverse()函数排序,数组单元按相反排列

  $newArray = array_reverse($array,TRUE);//TRUE设时保留原键名

  ※交集、差集

  //使用array_diff()计算三个数组的差集[对数组数值比较]

  $result = array_diff($dog1,$dog2,$dog3);

  //使用array_diff_assoc()计算三个数组的差集[对数值和键名比较]

  $result = array_diff_assoc($dog1,$dog2,$dog3);

  //使用array_diff_key()计算三个数组的差集[比较键名]

  $result = array_diff_key($dog1,$dog2,$dog3);

  //使用array_intersect()计算三个数组的交集[对数组数值比较]

  $result = array_intersect($dog1,$dog2,$dog3);

  //使用array_intersect_assoc()计算三个数组的交集[对数值和键名比较]

  $result = array_intersect_assoc($dog1,$dog2,$dog3);

  //使用array_intersect_key()计算三个数组的交集[比较键名]

  $result = array_intersect_key($dog1,$dog2,$dog3);

  ※合并数组

  //使用array_merge()函数合并数组

  $result = array_merge($array1,$array2,$array3,$array4,$array5);

  array_rand($input,10);//随机取出10个单元

  count($array,COUNT_RECURSIVE);//显示数组单元数目,2参数只可为1或者COUNT_RECURSIVE,有时可遍历多维数组

  ※出入栈

  //数组出栈,后进先出,数组最后一个单元弹出

  array_pop($array);

  //数组入栈,将7,8两个数值添加到数组尾部

  array_push($array,7,8);

  //将数组开头单元移出数组

  array_shift($array);

  //将7,8添加入数组开头

  array_unshift($array,7,8);

提供一个基础教程了,告诉你如果利用move_uploaded_file函数来实现多图片上传了,当然也可以实现多文件上传操作了,希望对你有帮助。

提供一个基础教程了,告诉你如果利用move_uploaded_file函数来实现多图片上传了,当然也可以实现多文件上传操作了,希望对你有帮助。

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<title>多文件上传</title>
</head>
<body>
<form accept="" method="post" enctype="multipart/form-data">
<input type="file" name="img[]" /><br />
<input type="file" name="img[]" /><br />
<input type="file" name="img[]" /><br />
<input type="file" name="img[]" /><br />
<input type="file" name="img[]" /><br />
<input type="file" name="img[]" /><br />
<input type="submit" name="s" /><br />
</form>
<?php教程
//上传文件信息
$img = $_FILES['img'];
if ($img)
{
//文件存放目录,和本php文件同级
$dir = dirname(__file__);
$i = 0;
foreach ($img['tmp_name'] as $value)
{
$filename = $img['name'][$i];
if ($value)
{
$savepath="$dir$filename";
$state = move_uploaded_file($value, $savepath);
//如果上传成功,预览
if($state)
{
echo "<img src='$filename' alt='$filename' /> ";
}
}
$i++;
}
}
?>
</body>
</html>

本教程举了两个实例说明利用cookie实现访问次数统计的代码,包括有php教程 js 两种方法

<?php

global $count;

$count=1;

if(!isset($_COOKIE["visittime"])){ setcookie("visittime",date("y-m-d H:i:s"));

setcookie("visitcount",1); echo "欢迎你第一次访问网站!";

}

else{

setcookie("visittime",date("y-m-d,H:i:s"),time()+60); $count=$_COOKIE['visitcount']+1;

setcookie("visitcount",$count); echo "你上次访问网站的时间为:".$_COOKIE['visittime'];

echo "<br>";

}

echo "你第".$_COOKIE['visitcount']."访问网站的时间为:".date("y-m-d H:i:s");

?>

下面看个简单的js实现访问次数统计代码

脚本说明:
第一步:把如下代码加入<body>区域中

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0)
break;
}
return null;
}
function SetCookie (name, value) {
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (2 < argc) ? argv[2] : null;
var path = (3 < argc) ? argv[3] : null;
var domain = (4 < argc) ? argv[4] : null;
var secure = (5 < argc) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
function DisplayInfo() {
var expdate = new Date();
var visit;
expdate.setTime(expdate.getTime() +  (24 * 60 * 60 * 1000 * 365));
if(!(visit = GetCookie("visit")))
visit = 0;
visit++;
SetCookie("visit", visit, expdate, "/", null, false);
var message;
if(visit == 1)
message="         Welcome to my page!";
if(visit== 2)
message="           I see you came back !";
if(visit == 3)
message="               Oh, it's you again!";
if(visit == 4)
message="            You must be curious!";
if(visit == 5)
message="      You're practically a regular!";
if(visit == 6)
message="              You need a hobby!";
if(visit == 7)
message="             Nothing better to do?";
if(visit == 8)
message="            Don't you ever sleep?";
if(visit == 9)
message="                      Get a life!!!";
if(visit >= 10)
message="  Rent is due on the 1st of the month!";
  alert("n"+"你的浏览器已经访问过本页" + visit +"次了"+"n"+"n"+message);
}
function ResetCounts() {
var expdate = new Date();
expdate.setTime(expdate.getTime() +  (24 * 60 * 60 * 1000 * 365));
visit = 0;
SetCookie("visit", visit, expdate , "/", null, false);
history.go(0);
}
// End -->
</Script>
<FORM>
<CENTER>
<INPUT NAME="update" TYPE="BUTTON" VALUE="查看次数" OnClick="history.go(0)">
<INPUT NAME="reset" TYPE="BUTTON" VALUE="重新计数" OnClick="ResetCounts()">
</CENTER>
</FORM>

冒泡排序-php教程版本-交换排序法

$a=array('11','2','13','4','22');
$num = count($a);
for($i=0;$i<$num;$i++){
    for($j=0;$j<$num;$j++){
        if($a[$i]<$a[$j]){
            $temp = $a[$i];
            $a[$i]=$a[$j];
            $a[$j]=$temp;
        }
    }   
}
print_r($a);

归并排序-数组交集-php版

$a=array('1','2','3','4','22');
$b=array('1','3','4','11','22','23');
f($a, $b, 5, 6, $t);
print_r($t);
function f(&$a, &$b, $n, $m, &$t){
    $i=0;$j=0;
    while($i<$n && $j<$m){
       
        if($a[$i]==$b[$j]){
            echo $a[$i]." ";//交集
            $t[]=$a[$i++];
            $t[]=$b[$j++];
        }elseif($a[$i]>$b[$j]){
             $t[]=$b[$j++];

        }else{
            $t[]=$a[$i++];

        }
       
    }
    while($i<$n){
         $t[]=$a[$i++];
    }
   
     while($j<$m){
         $t[]=$b[$j++];
    }
   
}

php教程中$_get要获取表单的数据那必须把METHOD=GET才行,否则就无法正常获取值哦,

$_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值。

$_GET 变量用于收集来自 method="get" 的表单中的值。从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个字符)。


看个获取表单数据的实例

<INPUT TYPE="image" NAME="submit_one" SRC="b.gif">
<INPUT TYPE="image" NAME="submit_two" SRC="b2.gif">


//Properly determining which submission button was clicked in PHP:

<?php
     if(isset($_GET['submit_one_x'])) {

     } elseif(isset($_GET['submit_two_x'])) {
     } else {

     }
?>

实例二

<?
<FORM ACTION="index.php" METHOD=GET>
<INPUT TYPE="hidden" NAME="time" VALUE="<?php echo time(); ?>">
Enter your message (5 minute time limit):<INPUT TYPE="text" NAME="mytext" VALUE="">
<INPUT TYPE="submit" Value="Send Data">
</FORM>

if($_GET['time']+300 >= time()) {
     echo "You took too long!<BR>";
     exit;
}
?>

操作select值

<SELECT NAME="myselect[]" MULTIPLE SIZE=3>
<OPTION VALUE="value1">A</OPTION>
<OPTION VALUE="value2">B</OPTION>
<OPTION VALUE="value3">C</OPTION>
<OPTION VALUE="value4">D</OPTION>
</SELECT>


//The PHP code to access which value(s) were selected:

<?php
     foreach($_GET['myselect'] as $val) {
          echo "You selected: $val<BR>";
     }
     echo "You selected ".count($_GET['myselect'])." Values.";
?>

获取表单提交的数据再输出,这也是个完整的实例

<html>
<head>
<title>A Simple HTML Form</title>
</head>
<body>
<div>
<form action="index.php" method="get">
<p><input type="text" name="user" /></p>
<p><textarea name="address" rows="5" cols="40">
</textarea></p>
<p><input type="submit" value="hit it!" /></p>
</form>
</div>
</body>
</html>


// index.php
<html>
<body>
<div>
 <?php
  print "Welcome <b>" . $_GET ['user'] . "</b><br/>nn";
  print "Your address is: <br/><b>" . $_GET ['address'] . "</b>";
  ?>
 </div>
</body>
</html>

注释:在使用 $_GET 变量时,所有的变量名和值都会显示在 URL 中。所以在发送密码或其他敏感信息时,不应该使用这个方法。不过,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。

注释:HTTP GET 方法不适合大型的变量值;值是不能超过 100 个字符的

 

[!--infotagslink--]

相关文章

  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • php数组操作 键名比较 差集 交集赋值

    本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
  • C#二维数组基本用法实例

    这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • C#数组的常用操作方法小结

    Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
  • php curl模拟post请求和提交多维数组的示例代码

    下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <&#63;php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08