php中数值数组、关联数组、多维数组用法

在php中用三种数组分别是数值数组,关联数组,多维数组那么它们三种的用法有一点不同,下面我们来看看吧.

数值数组:数值数组存储的每个元素都带有一个数字 ID 键,可以使用不同的方法来创建数值数组.

例子1,在这个例子中,会自动分配 ID 键,代码如下:

$names = array("Peter","Quagmire","Joe");

例子 2,在这个例子中,我们人工分配的 ID 键,代码如下:

  1. $names[0] = "Peter";
  2. $names[1] = "Quagmire";
  3. $names[2] = "Joe";可以在脚本中使用这些 ID 键:
  4. <?php
  5. $names[0] = "Peter";
  6. $names[1] = "Quagmire";
  7. $names[2] = "Joe";
  8. echo $names[1] . " and " . $names[2] . " are ". $names[0] . "'s neighbors";
  9. ?>

数组排序

(1)sort(array $array[,int sorttype])

array 表示一个数组

sorttype 取值:SORT_REGULAR - 默认,以它们原来的类型进行处理(不改变类型),SORT_NUMERIC - 把值作为数字来处理,SORT_STRING - 把值作为字符串来处理 ,SORT_LOCALE_STRING - 把值作为字符串来处理,基于本地设置.

(2)bool rsort(array $array[,sorttype])函数,逆向排序(值逆向),sorttype 同上

(3)bool shuffle()函数,随机排序

(4)array array_reverse (array $array[,bool preserve_keys]) 反向排列,preserve_keys 为true时 保留原来的键名

(5)array array_merge()合并数组

(6)array array_slice(array $array,int offset[,int length[,boolpreserve_keys ])

offset非负,这array中的偏移变量从此开始,为负时从末端开始,length为正时,则表示序列中有很多单元,为负时表示从末端开始第几个数处结束,若省略则从offset开始一直到最后,boolpreserve_keys 同上.

数组循环输出,代码如下:

  1. <?php
  2. $shuzu=array('a'=>"wo",'b'=>"ni",'c'=>"ta",'d'=>"php",'e'=>"mysql");
  3. echo "使用foreach函数遍历数组";
  4. echo "<br/>$nbsp;<br/>";
  5. foreach($shuzu as $key=>$value)
  6. {
  7. echo "$key 代表: $value";
  8. echo "<br/>$nbsp;<br/>";
  9. }
  10. ?>

关联数组

关联数组,它的每个 ID 键都关联一个值,在存储有关具体命名的值的数据时,使用数值数组不是最好的做法,通过关联数组,我们可以把值作为键,并向它们赋值.

例子1,在本例中,我们使用一个数组把年龄分配给不同的人,代码如下:

$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);

例子 2,本例与例子 1 相同,不过展示了另一种创建数组的方法,代码如下:

  1. $ages['Peter'] = "32";
  2. $ages['Quagmire'] = "30";
  3. $ages['Joe'] = "34";可以在脚本中使用 ID 键:
  4. <?php
  5. $ages['Peter'] = "32";
  6. $ages['Quagmire'] = "30";
  7. $ages['Joe'] = "34";
  8. echo "Peter is " . $ages['Peter'] . " years old.";
  9. ?>
  10. //以上脚本的输出:
  11. //Peter is 32 years old.

关联数组判断为空的代码,然后我们详细讲讲关于数据空的处理,代码如下:

  1. <?php
  2. $array = array(0);
  3. if(emptyempty($array)){
  4. echo "我空了n";
  5. }else{
  6. echo "我不空啊n";
  7. }
  8. $array['array']='我是数组';
  9. print_r($array);
  10. $array['array1']='我是数组1';
  11. print_r($array);
  12. unset($array['array1']);
  13. print_r($array);
  14. ?>

遍历:遍历用户列表的时候,只需直接用 isset 查询那个用户名是否存在即可,PHP 版代码如下:

  1. <?php
  2. $arrayHash = array();
  3. foreach($arrayN as $nameN) {
  4. // 本行执行了 N 次。
  5. $arrayHash[$nameN] = 1;
  6. }
  7. foreach($arrayM as $keyM => $nameM) {
  8. if (isset($arrayHash[$nameM])) {
  9. // 本行执行了 M 次!
  10. unset($arrayM[$keyM]);
  11. }
  12. }
  13. return $arrayM;
  14. ?>

多维数组:在多维数组中,主数组中的每个元素也是一个数组,在子数组中的每个元素也可以是数组,以此类推.

例子 1,在本例中,我们创建了一个带有自动分配的 ID 键的多维数组,代码如下:

  1. $families = array
  2. (
  3. "Griffin"=>array
  4. (
  5. "Peter",
  6. "Lois",
  7. "Megan"
  8. ),
  9. "Quagmire"=>array
  10. (
  11. "Glenn"
  12. ),
  13. "Brown"=>array
  14. (
  15. "Cleveland",
  16. "Loretta",
  17. "Junior"
  18. )
  19. );
  20. /*
  21. 如果输出这个数组的话,应该类似这样:
  22. Array
  23. (
  24. [Griffin] => Array
  25. (
  26. [0] => Peter
  27. [1] => Lois
  28. [2] => Megan
  29. )
  30. [Quagmire] => Array
  31. (
  32. [0] => Glenn
  33. )
  34. [Brown] => Array
  35. (
  36. [0] => Cleveland
  37. [1] => Loretta
  38. [2] => Junior
  39. )
  40. )*/

例子 2,让我们试着显示上面的数组中的一个单一的值,代码如下:

  1. echo "Is " . $families['Griffin'][2] .
  2. " a part of the Griffin family?";
  3. //以上代码的输出:
  4. //Is Megan a part of the Griffin family?

数组排序,代码如下:

  1. <?php
  2. $array[] = array("age"=>20,"name"=>"li");
  3. $array[] = array("age"=>21,"name"=>"ai");
  4. $array[] = array("age"=>20,"name"=>"ci");
  5. $array[] = array("age"=>22,"name"=>"di");
  6. foreach ($array as $key=>$value){
  7. $age[$key] = $value['age'];
  8. $name[$key] = $value['name'];
  9. }
  10. array_multisort($age,SORT_NUMERIC,SORT_DESC,$name,SORT_STRING,SORT_ASC,$array);
  11. print_r($array);
  12. ?>