php数组小结

2013-10-27 01:30:27

最近在买房子的过程中,感觉二手房交易的流程等信息很难查询到,做了一个简单的二手房信息交流网站。从图书馆借了《PHP和MySQL Web开发》。之前对php的开发,对数组方面的概念感觉有点乱,结合看书的体会,总结一下:


一、php数组分类

php的数组分为两类:数字索引数组和非数字索引数组。

数组的每一个元素为数组元素,把偶偶一个key及对应value—— 一个hash关系的结构

1.1 数字索引数组

    与C语言的数组差不多,遍历也是用for($i= 0; $i < length; $i++)。

    定义方法如:$products = array("abc","bc","c");   <==> $products[0] ="abc"; $products[1] = "bc";...

    与C语言不通,这里有一个$numbers = range(1,10);可以方便生成数组,字符串也相同:$letters = range('a','z');


1.2非数字索引数组(又称关联数组)

    $arr = array('ABC' = >100, 'BBC'=>200);

    遍历方法见第三部分。


注意的是:

    php的数组增加很方便,很随意,与C的静态语言数组很不相同,如:

    $arr = array();

    $arr[0] = 'abc';


    $arr = array('ABC' =>100);

    $arr['bc'] = 10;



二、php数组的某些特殊赋值情形

2.1

// 声明数组

$test01 = array();

// 追加数据

$test01[] = "a";  // array(0 => "a");

// 追加一个索引为"a",数据为"b"的数据

$test01["a"] = "b"; // array(0 => "a", "a" => "b");

// 修改索引为0的数据

$test01[0] = "c"; // array(0 => "c", "a" => "b");


2.2

// 另一种声明方法

$test02 = array("a", "b", "c");  // array(0 => "a", 1 => "b", 2 => "c");

// 虽然声明了一个字符串索引的数据,但默认索引还是从0开始

$test03 = array("a" => "a", "b", "c");// array("a" => "a", 0 => "b", 1 => "c");

// 声明中最大的索引为2,虽然最近是索引是0,但默认索引还是从3开始

$test04 = array(2 => "a", 0=>"b", "c");// array(2 => "a", 0 => "b", 3 => "c");

// 声明一个小数索引会取其整数部分;指定索引时,会修改之前声明的值

$test05 = array("a", 2.7=>"b", 0=>"c");// array(0 => "c", 2 => "b");

// 虽然声明了负数索引,但默认索引还是从0开始

$test06 = array(-2 =>"a", "b", "c");// array(-2 => "a", 1 => "b", 2 => "c");

// 多维数组的定义

$test07 = array($test01, $test02, $test03);


三、php数组遍历

current() 函数返回的是元素的值,而 key() 函数返回的是元素的键名,each()返回的是键值对

下面介绍PHP中遍历关联数组的三种方法:

数组定义如下,


<?php

$sports = array(

'football' => 'good',

'swimming' => 'very well',

'running'  => 'not good'

);

?>


3.1 foreach方法,这是php独有的:

<?php

foreach ($sports as $key => $value) {

echo $key.": ".$value."<br />";

}

?>


3.2  while & each方法

<?php

while ($elem = each($sports)) {

echo $elem['key'].": ".$elem['value']."<br />";

}

?>


3.3 while & list & each方法

<?php

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

echo $key.": ".$value."<br />";

}

?>


以上三种都可以得到如下的运行结果:

football: good

swimming: very well

running: not good


四、数组的其他函数

array_reverse($a,true);

$a的值不会改变,传的是值,不是引用

使用如下:

  $dates_reverse = array_reverse($_dates);


五、数组做参数

可以直接传入:用[],或者array()。

fun("ip is",["ip"=>"$tmp"]);

fun(ip is”,array("ip"=>"$tmp”));