最后介绍一些一些非常实用又非常常用的数组函数.
array_walk ( array &array, callback funcname [, mixed userdata] )
如果成功则返回 TRUE,失败则返回 FALSE.
将用户自定义函数 funcname 应用到 array 数组中的每个单元.典型情况下 funcname 接受两个参数.array 参数的值作为第一个,键名作为第二个.如果提供了可选参数 userdata,将被作为第三个参数传递给 callback funcname.
示例:
<?php
function output($val,$key){
echo "php爱好者站推荐:".$val;
echo "\n";
}
$arr = array(
'phpfans' => 'www.phpfans.net',
'php' => 'www.php.net',
'mysql' => 'www.mysql.com',
'apache' => 'www.apache.org'
);
array_walk($arr,'output');
?> ;
输出:
php爱好者站推荐:www.phpfans.net
php爱好者站推荐:www.php.net
php爱好者站推荐:www.mysql.com
php爱好者站推荐:www.apache.org |
注意:如果希望真正修改数组键/值对,就需要将每个键/值对作为引用传递给函数.引用会在变量那章详细说到
示例:
<?php
function output(&$val,$key){//&引用调用
$val = "php爱好者站推荐:".$val;
}
$arr = array(
'phpfans' => 'www.phpfans.net',
'php' => 'www.php.net',
'mysql' => 'www.mysql.com',
'apache' => 'www.apache.org'
);
array_walk($arr,'output');
print_r($arr);
?> ;
输出:
Array
(
[phpfans] => php爱好者站推荐:www.phpfans.net
[php] => php爱好者站推荐:www.php.net
[mysql] => php爱好者站推荐:www.mysql.com
[apache] => php爱好者站推荐:www.apache.org
) |
array_unique ( array array )
array_unique() 接受 array 作为输入并返回没有重复值的新数组.
注意键名保留不变.array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名.这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留.
注: 当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同.就是说,当字符串的表达一样时.
示例:
<?php
//PHPfans站系列教程:
//http://www.phpfans.net/bbs/forumdisplay.php?fid=25
$arr = array(
'phpfans' => 'www.phpfans.net',
'php爱好者' => 'www.phpfans.net',
'php' => 'www.php.net',
'mysql' => 'www.mysql.com',
'apache' => 'www.apache.org'
);
$new_arr = array_unique($arr);//这个函数是返回一个新数组,并不改变原来的数组
print_r($new_arr);
?> ;
输出:
Array
(
[phpfans] => www.phpfans.net
[php] => www.php.net
[mysql] => www.mysql.com
[apache] => www.apache.org
) |
array_count_values ( array input )
array_count_values() 返回一个数组,该数组用 input 数组中的值作为键名,该值在 input 数组中出现的次数作为值.
示例:
<?php
$arr = array(
'phpfans' => 'www.phpfans.net',
'php爱好者' => 'www.phpfans.net',
'php' => 'www.php.net',
'mysql' => 'www.mysql.com',
'apache' => 'www.apache.org'
);
$new_arr = array_count_values($arr);//这个函数是返回一个新数组,并不改变原来的数组
print_r($new_arr);
?> ;
输出:
Array
(
[www.phpfans.net] => 2
[www.php.net] => 1
[www.mysql.com] => 1
[www.apache.org] => 1
) |
extract ( array var_array [, int extract_type [, string prefix]] )
本函数用来将变量从数组中导入到当前的符号表中.接受结合数组 var_array 作为参数并将键名当作变量名,值作为变量的值.对每个键/值对都会在当前的符号表中建立变量,并受到 extract_type 和 prefix 参数的影响.
这个函数也是非常实用的,比如说 $_GET['name'] 可以直接用 $name 是不是更加方便点呢?
当然在 register_globals 为 on 时也可以用 $name,但用extract也可以方便地做到
<?php
$arr = array(
'phpfans' => 'www.phpfans.net',
'php爱好者' => 'www.phpfans.net',
'php' => 'www.php.net',
'mysql' => 'www.mysql.com',
'apache' => 'www.apache.org'
);
extract($arr);
echo $phpfans;
?> ;
输出:
array_flip()
array_flip()函数将使数组target_array中键及其相应值倒换角色,并返回一个新的数组.
示例:
<?php
$arr = array(
'a' => 'phpfans',
'b' => 'php',
'c' => 'apache'
);
$new_arr = array_flip($arr);
print_r($new_arr);
?> ;
输出:
Array
(
[phpfans] => a
[php] => b
[apache] => c
) |
附:数组运算符
$a + $b 联合 $a 和 $b 的联合.
$a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE.
$a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE.
$a != $b 不等 如果 $a 不等于 $b 则为 TRUE.
$a <> $b 不等 如果 $a 不等于 $b 则为 TRUE.
$a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE.