最近在买房子的过程中,感觉二手房交易的流程等信息很难查询到,做了一个简单的二手房信息交流网站。从图书馆借了《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”));