6.10 数组检索

in_array ( mixed needle, array haystack [, bool strict] )

在 haystack 中搜索 needle,如果找到则返回 TRUE,否则返回 FALSE.
如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同.
注: 如果 needle 是字符串,则比较是区分大小写的.
注: 在 PHP 版本 4.2.0 之前,needle 不允许是一个数

比如说条条件 if($a == 1 || $a == 2 || $a ==9 || $a == 6)
那么我们用in_array() 是不是更方便点呢?if(in_array($a,array(1,2,9,6)))

示例:

[复制到剪切板]
CODE:
<?php 
$arr 
= array(
   
'www.phpfans.net',
   
'www.php.net',
   
'www.mysql.com',
   
'www.apache.org'
);

if(
in_array('www.phpfans.net',$arr)){
    echo 
' 数组中包含php爱好者站网站';
}
?> ;


输出:
数组中包含php爱好者站网站
array_key_exists ( mixed key, array search )
(PHP 4 >= 4.1.0, PHP 5)

array_key_exists() 在给定的 key 存在于数组中时返回 TRUE.key 可以是任何能作为数组索引的值.array_key_exists() 也可用于对象.
array_key_exists() 与 isset() 对比,isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会.

示例:

[复制到剪切板]
CODE:
<?php 
$arr 
= array(
   
'phpfans' => 'www.phpfans.net',
   
'php爱好者' => null,
   
'php' => 'www.php.net',
   
'mysql' => 'www.mysql.com',
   
'apache' => 'www.apache.org'
);

var_dump(array_key_exists('phpfans',$arr));
echo 
"\n";
var_dump(array_key_exists('php爱好者',$arr));
echo 
"\n";
var_dump(isset($arr['php爱好者']));
?> ;


输出:
bool(true)

bool(true)

bool(false)
array_search ( mixed needle, array haystack [, bool strict] )
在 haystack 中搜索 needle 参数并在找到的情况下返回键名,否则返回 FALSE.
注: 如果 needle 是字符串,则比较以区分大小写的方式进行.
注: 在 PHP 4.2.0 之前,array_search() 在失败时返回 NULL 而不是 FALSE.
如果可选的第三个参数 strict 为 TRUE,则 array_search() 还将在 haystack 中检查 needle 的类型.

如果 needle 在 haystack 中出现不止一次,则返回第一个匹配的键.要返回所有匹配值的键,应该用 array_keys() 加上可选参数 search_value 来代替.

示例:

[复制到剪切板]
CODE:
<?php 
$arr 
= array(
   
'phpfans' => 'www.phpfans.net',
   
'php' => 'www.php.net',
   
'mysql' => 'www.mysql.com',
   
'apache' => 'www.apache.org'
);

echo 
array_search('www.phpfans.net',$arr);
?> ;


输出:
phpfans
array_keys()
array_keys()函数返回一个由数组target_array中所有键组成的数组.如果包括可选的参数serch_value,则只返回包含值的键.示例如下:

示例:

[复制到剪切板]
CODE:
<?php 
$arr 
= array(
   
'phpfans' => 'www.phpfans.net',
   
'php爱好者' => 'www.phpfans.net',
   
'php' => 'www.php.net',
   
'mysql' => 'www.mysql.com',
   
'apache' => 'www.apache.org'
);

print_r(array_keys($arr));
echo 
"\n";
print_r(array_keys($arr,'www.phpfans.net'));
?> ;


输出:
Array
(
    [0] => phpfans
    [1] => php爱好者
    [2] => php
    [3] => mysql
    [4] => apache
)

Array
(
    [0] => phpfans
    [1] => php爱好者
)
array_values()

array_values()函数返回数组target_array中的所有值,并自动为返回的数组提供数值索引.例如:

示例:

[复制到剪切板]
CODE:
<?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'
);

print_r(array_values($arr))
?> ;


输出:
Array
(
    [0] => www.phpfans.net
    [1] => www.phpfans.net
    [2] => www.php.net
    [3] => www.mysql.com
    [4] => www.apache.org
)
如履薄冰