ITPub博客

首页 > 数据库 > Oracle > PHP—数组 奇歌

PHP—数组 奇歌

Oracle 作者:zhaoming5 时间:2013-08-06 12:54:36 0 删除 编辑
   一、数组的概述
  1. 数组的本质:管理和操作一组变量,成批处理
  2. 数组是复合类型
  3. 数组中可以存储任意长度的数据,也可以存储任意类型的数据
       4. 数组就可以完成其它语言数据结构的功能(链表, 队列, 栈, 集合类)
       
  二、数组的分类
      数组中存有多个单元,(单元称为元素)
      每个元素(下标[键]和值)
      单访问元素时候,都是通过下标(键)来访问元素
 
  1. 一维数组, 二维数组, 三维数组 。。。 多维数组
  (数组的数组, 就是在数组中存有其它的数组)
  2. PHP中有两种数组
  索引数组:就是下标是顺序整数作为索引  
  关联数组:就是下标是字符串作为索引
 
  下标(整数, 字符串)只有这两种
 
  三、数组多种声明方式
 
      1. 直接为数组元素赋值
        a.如果索引下标不给出,就会从0开始顺序索引
    b.如果给出索引下标,下一个就会是从最大的开始增1
    c.如果后面出现前面的下标,如果是赋值就是为前面的元素重新赋值
           
          d. 混合声明时,索引和关联不互相影响(不影响索引下标的声明)
      2. 使用array()函数
       a. 默认是索引数组
       b.如果为关联数组和索引数组指定下标,使用 键=>值
       c.多个成员之前使用“,”分割
      3. 使用其它的函数声明
         file();
-------------------------------------------------------------
  $info=array(
"user"=>array(
//$user[0]
array(1, "zansan", 10, "nan"),
//$user[1][1]
array(2, "lisi", 20, "nv"),    //$user[1]
//$user[2]
array(3, "wangwu", 30, "nan")
),
"score"=>array(
array(1, 100, 90, 80),
array(2, 99, 88, 11),
array(3, 10, 50, 88)
),
"connect"=>array(
array(1, '110', 'aaa@bbb.com'),
array(2, '120', 'bbb@ccc.com'),
array(3, '119', 'ccc@ddd.com')
)
);

echo $info["connect"][1][2];

echo '
';
print_r($info);
echo '';

$user[0][]=1;
$user[0][]=1;
$user[0][]=1;

echo '
';
print_r($user);
echo '';
----------------------------------------------------------------
  数组的遍历
 
  1. 使用for语句循环遍历数组
    a. 其它语言(只有这一种方式)
          b. PHP中这种方式不是我们首选方式
          c. 数组必须是索引数组,而且下标还必须是连续的
             (索引数组下标还可以不连序,数组还有关联数组)
    
 
  2. 使用foreach语句循环遍历数组
    foreach(数组变量 as 变量值){
  循环体
    }
    a. 循环次数由数组的元素个数决定
    b. 每一次循环都会将数组中的元素分别赋值给后面变量
 
    foreach(数组变量 as 下标变量=> 值变量){
 
    }
 
  3. while() list() each() 组合循环遍历数组
 
        each()函数, 
        a. 需要一个数组作为参数
        b. 返回来的也是一个数组
        c. 返回来的数组是0, 1, key, value四个下标(固定的)
        0和key下标是当前参数数组元素的搖
        1和value下标是当前对数数组元素的值
 
               d. 默认认当前元素就是第一个元素
               e. 每执行一次后就会将当前元素向后移动
               f. 如果到最后的元素再执行这个函数,则返回false
 
  Array ( [1] => 1 [value] => 1 [0] => id [key] => id ) 
     
       list()函数
 
  a. list()=array(); 需要将一个数组赋值给这个函数
  b. 数组中的元素个数,要和list()函数中的参数个数相同
  c. 数组中的每个元素值会赋值list()函数中的每个参数,list()将每个参数转为变量
  d. list()只能接收索引数组
  e. 按索引的下标的顺序

$user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");
while($arr=each($user)){
//echo $arr[0]."==>".$arr[1]."
";
echo $arr["key"]."---->".$arr["value"]."
";
}

使用数组的内部指针控制函数
next(数组);
prev(数组);
reset(数组)
end(数组);

current(数组);
key(数组);
 
$user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");

while(list($key, $value)=each($user)){
echo $key."==>".$value."
";
}
reset($user);
while(list($key, $value)=each($user)){
echo $key."==>".$value."
";
}
reset($user);
next($user);
next($user);
while(list($key, $value)=each($user)){
echo $key."==>".$value."
";
}
reset($user);

echo current($user)."===========>".key($user)."
";
end($user);
echo current($user)."===========>".key($user)."
";
prev($user);
echo current($user)."===========>".key($user)."
";

-----------------------------------------------------------------
 预定义数组:
  自动全局变量---超全局数组
 
  1. 包含了来自WEB服务器,客户端,运行环境和用户输入的数据
  2. 这些数组比较特别
  3. 全局范围内自动生效,都可以直接使用这些数组
  4. 用户不能自定义这些数组, 但这些数据操作方式又和我们自定义的数组操作方式一样
  5. 在函数中直接可以使用这些数组
 
  $_GET       //经由URL请求提交至脚本的变量 
  $_POST      //经由HTTP POST 方法提交到脚本的变量
  $_REQUEST   //经由GET, POST和COOKIE机制提交 到脚本的变量,因此该数组并不值得信任,不去使用(尽量)
  $_FILES     //经由HTTP POST  文件上传而提交至脚本, 文件处理一章,文件上传
  $_COOKIE    //
  $_SESSION   //
  $_ENV       //执行环境提交至脚本的变量
  $_SERVER    //变量由WEB服务器设定的,或 直接和当前脚本的执行环境相关联
  $GLOBALS    //只要是当前脚本有效的变量都在这里,数组键名为全局变量的名称

$c=300;
echo '
';
print_r($GLOBALS);
echo '';
function demo(){
echo $GLOBALS["a"]."
";
echo $GLOBALS["b"]."
";
echo $GLOBALS["c"]."
";
}
demo();
demo();
-------------------------------------
 数组的相关处理函数(上)
  
   一 数组键/值操作有关的函数
    1.  array_values()
    2.  array_keys()
    3.  in_array()
  4. array_key_exists
5.array_flip -- 交换数组中的键和值
6. array_reverse --  返回一个单元顺序相反的数组 
   
    二、 统计数组元素的个数和惟一性

    1. count() sizeof();
    2. array_count_values -- 统计数组中所有的值出现的次数
    3. array_unique -- 移除数组中重复的值

    三、使用回调函数处理数组的函数

    1. array_filter()  用回调函数过滤数组中的单元 
2. array_walk()   数组中的每个成员应用用户函数

3. array_map()     将回调函数作用到给定数组的单元上 

$lamp=array("os"=>"linux", "wb"=>"apache", "db"=>"mysql", "la"=>"php");
$lp=array("os"=>"window", "wb"=>"apache", "db"=>"oracle", "la"=>"php");
$arr=array_map("myfun1", $lamp, $lp);
function myfun1($n, $t){
if($n==$t){
return "same";
}
return "different";
}
  
echo '
';
print_r($arr);
echo '';
-------------------------------------------------------------------
 数组的排序函数
     sort()
     rsort()
     usort()
     asort()
     arsort()
     uasort()
     ksort()
     krsort()
     uksort()
     natsort()
     natcasesort()
     array_multisort()
 
     1. 简单的数组排序
       sort() rsort()
     2. 根据键名对数组排序
      ksort() krsort()
     3. 根据元素的值对数组排序
       asort() arsort()
     4. 根据“自然数排序”法对数组排序
      natsort()  natcasesort()
     5. 根据用户自定义规则对数组排序
        usort() uasort() uksort()
      6.多维数组的排序
       array_multisort
  
  拆分、合并、分解、接合的数组函数
     1. array_slice()
     2.array_splice()
     3. array_combine();
     4. array_merge();
     5. array_intersect();
     6. array_diff()
 
  数组与数据结构的函数
     1. 使用数据实现堆栈
      array_push()
      array_pop()
     2. 使用队列
       array_unshift()
       array_shift()
 
       unset()
 
  其它与数据操作有关的函数 
       array_rand();
       shuffle()
       array_sum()
       range()
<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22019492/viewspace-1116536/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-07-02