百度首页 | 百度空间
 
查看文章
 
PHP之数组使用
2007-12-27 23:13

<?php
/**
* 直接按照键,即索引来找值,后面相关说明定义为:
* 索引称之为“键”,而相关值则称为“值”
* 如果没有指定键,则缺省为从0开始的整数
*/
$numbers = array (
5,
4,
3,
2,
1
);
$words = array (
"web",
"database",
"application"
);
echo $numbers[2] . "<br>";
echo $words[0] . "<br>";
echo "<hr>";
//-----------------------------------------------
/**
* 这里是指定键的情况,其中键与值的类型任意
* 注意定义方法,一是直接指定其数组内容,一是逐个增加
*/
$numbers = array (
1 => "one",
3 => "three",
5 => "zero"
);
echo $numbers[3] . "<br>";
echo "<hr>";

$error = array ();
$error[] = "no error!!!";
$error[] = "second error!!!";
echo $error[0] . "<br>";
echo $error[1] . "<br>";
echo "<hr>";
//-----------------------------------------------
/**
* 同上
*/
$newarray = array (
"first" => 1,
"second" => 2,
"third" => 3
);
echo $newarray["second"] . "<br>";
$newarray["third"] = 5;
echo $newarray["third"] . "<br>";
echo "<hr>";
//-----------------------------------------------
/**
* 数组内部的类型可以是不同的
*/
$mixedBag = array (
"cat",
42,
8.5,
false
);
var_dump($mixedBag);
echo "<br>" . $mixedBag[2] . "<br>";
echo "<hr>";
//-----------------------------------------------
/**
* 多维数组
*/
$planets = array (
array (
   "MM",
   1,
   2
),
array (
   "NN",
   3,
   4
)
);
print $planets[1][0] . "<br>";
$planets2 = array (
"BB" => array (
   "GG" => 6,
   "HH" => 7,
   "PP" => array (
    "haha!!!!"
   )
),
"VV" => array (
   "JJ" => 6,
   "KK" => 7,
   "LL" => array (
    "one",
    "two"
   )
)
);
print $planets2["VV"]["LL"][0] . "<br>";
echo "<hr>";
//-----------------------------------------------
/**
* 数组的遍历方式
*/
$length = array (
0,
107,
202,
400,
475
);
//将厘米转换为寸 count()函数会找出该数组的元素个数
for ($i = 0; $i < count($length); $i++) {
echo ($length[$i] / 3) . "<br>";
}
$j = 0;
while (isset ($length[$j])) {
echo ($length[$j] / 3) . "<br>";
$j++;
}
foreach ($length as $cm) {
echo ($cm / 3) . "<br>";
}
echo "<hr>";
//-----------------------------------------------
$sound = array (
"cow" => "moo",
"dog" => "woof",
"pig" => "oink",
"duck" => "quack"
);
foreach ($sound as $animal => $noice) {
echo "$animal 得叫声是这样的 $noice $noice......<br>";
}
echo "<hr>";
//-----------------------------------------------
/**
* 数组的操作指针
*/
$a = array (
"a",
"b",
"c",
"d",
"e",
"f"
);
echo current($a) . "<br>";
each($a);
key($a); //目前数组的指针,返回其索引
echo current($a) . "<br>"; //当前元素的值
each($a); //返回当前元素的值并将内部索引指向下一个元素
each($a);
echo current($a) . "<br>";
next($a); //指向下一个元素
echo current($a) . "<br>";
prev($a); //指向上一个元素
echo current($a) . "<br>";
end($a); //指向最后一个元素
echo current($a) . "<br>";
key($a);
echo current($a) . "<br>";
echo "<hr>";
//-----------------------------------------------
/**
* 数组的查询
*/
$a = array (
"a",
"b",
"c",
"d",
"e",
"f"
);
$index = array_search("c", $a);
// 返回键值而不是布尔值,找不到时返回false,找到的元素如果正好是第一个元素,则返回0,
// 而PHP会自动转化为false所以需要使用===判断
if ($index === false)
echo "在数组a中未发现字符'c'" . "<br>";
else
echo "Index = $index" . "<br>";
echo "<hr>";
//-----------------------------------------------
/**
* 数组反转
*/
$a = array (
"a",
"b",
"c",
"d",
"e",
"f"
);
$newa = array_reverse($a); //逆转数组,生成一个新数组,可选参数为true时,保留索引和元素之间的关联
echo $newa[0] . "<br>";
$newb = array_reverse($a, true); //依旧保留了索引和元素之间的关联
echo $newb[0] . "<br>";
echo "<hr>";
//-----------------------------------------------
/**
* 数组的排序
*/
$numbers = array (
16,
3,
2,
171,
5,
24,
6,
19
);
sort($numbers); //根据值进行升序排列(在原数组中重新排列元素)
foreach ($numbers as $n)
echo $n . " ";
echo "<br>";
$numbers = array (
16,
3,
2,
171,
5,
24,
6,
19
);
// 根据 值 进行降序排列(在原数组中重新排列元素)
// 可选参数可以指定为按数字方式SORT_NUMERIC还是字符串方式SORT_STRING或者通常的方式SORT_REGULAR排序
// sort()、rsort()可以用于关联数组,但是 键 将丢失
rsort($numbers);
foreach ($numbers as $n)
echo $n . " ";
echo "<br>";
$numbers = array (
16,
3,
2,
171,
5,
24,
6,
19
);
sort($numbers, SORT_STRING);
foreach ($numbers as $n)
echo $n . " ";
echo "<br>";
$a = array (
"o" => "kk",
"e" => "zz",
"z" => "hh",
"a" => "rr"
);
// 根据 值 进行升序排列(在原数组中重新排列元素),保持键值关联
asort($a);
foreach ($a as $keyname => $keyvalue)
echo $keyvalue;
echo "<br>";
$a = array (
"o" => "kk",
"e" => "zz",
"z" => "hh",
"a" => "rr"
);
// 根据 键或索引 进行升序排列
ksort($a);
foreach ($a as $keyname => $keyvalue)
echo $keyvalue;
echo "<br>";
//基于长度比较两个字符串
// 根据用户定义排序,用户定义自己的排序规则函数,但函数必须符合
// uasort(array subject, string compare_function)
// integer my_compare_function(mixed a, mixed b),a > b返回1,
// auksort(array subject, string compare_function)//a等于b时返回0
function cmp_length($a, $b) {
if (strlen($a) < strlen($b))
   return -1;
if (strlen($a) > strlen($b))
   return 1;
return 0;
}
$animals = array (
"cow",
"ox",
"monkey",
"mimi"
);
usort($animals, "cmp_length");
foreach ($animals as $an)
echo $an." ";
echo "<hr>";
//-----------------------------------------------
/**
* 合并
*/
$a = array("name"=>"zhangsan",10,100);
$b = array("name"=>"lisi",4,6,8);
//组合数组,从两个数组生成一个数组,具有相同 键 的值会被覆盖
$c = array_merge($a,$b);
var_dump($c);
echo "<hr>";
//-----------------------------------------------
$a = array("name","math","china");
$b = array("zhangsan",4,6);
//a数组的值为新数组的键,b数组的值为新数组的值,数组长度不同时,返回false
$c = array_combine($a,$b);
var_dump($c);
echo "<hr>";
//-----------------------------------------------
?>

其打印出来的内容如下:

3
web


three


no error!!!
second error!!!


2
5


array(4) { [0]=> string(3) "cat" [1]=> int(42) [2]=> float(8.5) [3]=> bool(false) }
8.5


NN
one


0
35.6666666667
67.3333333333
133.333333333
158.333333333
0
35.6666666667
67.3333333333
133.333333333
158.333333333
0
35.6666666667
67.3333333333
133.333333333
158.333333333


cow 得叫声是这样的 moo moo......
dog 得叫声是这样的 woof woof......
pig 得叫声是这样的 oink oink......
duck 得叫声是这样的 quack quack......


a
b
d
e
d
f
f


Index = 2


f
a


2 3 5 6 16 19 24 171
171 24 19 16 6 5 3 2
16 171 19 2 24 3 5 6
hhkkrrzz
rrzzkkhh
ox cow mimi monkey


array(6) { ["name"]=> string(4) "lisi" [0]=> int(10) [1]=> int(100) [2]=> int(4) [3]=> int(6) [4]=> int(8) }


array(3) { ["name"]=> string(8) "zhangsan" ["math"]=> int(4) ["china"]=> int(6) }



类别:技术 | 添加到搜藏 | 浏览() | 评论 (1)
 
最近读者:
 
网友评论:
1
2007-12-27 23:16
Array 数组函数
http://www.php.net/manual/zh/ref.array.php
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu