本节内容:
php数组函数in_array()的用法
bool in_array ( mixed $needle, array $haystack [, bool $strict] )
在 haystack 中搜索 needle,如果找到则返回 TRUE,否则返回 FALSE。
如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。
注意: 如果 needle 是字符串,则比较是区分大小写的。
注意: 在 PHP 版本 4.2.0 之前,needle 不允许是一个数组。
例1,in_array()的简单用法。
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix";
}
if (in_array("mac", $os)) {
echo "Got mac";
}
?>
输出: Got Irix
例2,严格类型检查的in_array()用法。
$a = array('1.10', 12.4, 1.13);
if (in_array('12.4', $a, true)) {
echo "'12.4' found with strict check/n";
}
if (in_array(1.13, $a, true)) {
echo "1.13 found with strict check/n";
}
?>
输出: 1.13 found with strict check
例3,用数组作为 needle 的用法。
$a = array(array('p', 'h'), array('p', 'r'), 'o');
if (in_array(array('p', 'h'), $a)) {
echo "'ph' was found/n";
}
if (in_array(array('f', 'i'), $a)) {
echo "'fi' was found/n";
}
if (in_array('o', $a)) {
echo "'o' was found/n";
}
?>
输出:
'ph' was found
'o' was found
您可能感兴趣的文章:
php中IN_ARRAY函数的注意事项
php数组入门教程之in_array()函数
php数组函数 in_array 的用法及注意事项
php in_array用法一例
php数组函数 in_array() 查找数组中是否存在指定值
本节内容:
快速查找数组array最大值
例如,以下方法均能返回数组最大值:
function kmax1($a)
{
return array_search(max($a), $a);
}
function kmax2($a)
{
$m = max($a);
return array_search($m, $a);
}
$a = array();
for($i = 0; $i < 2000; $i++)
{
$a[] = 100 / rand(1, 10000);
}
for($i = 0; $i < 1000; $i++)
{
$b = kmax1($a);
unset($b);
}
for($i = 0; $i < 1000; $i++)
{
$b = kmax2($a);
unset($b);
}
以上的两种方法均可找到数组(2000随机浮点数)里的最大值,但是kmax1是通过max()直接把值插入到array_search(),而kmax2是把值存储到一个独立的变量$m里。
对于array_search的理解,它可能是在kmax1(类似for循环中sizeof()分类)里执行max()多次,所以写了这个代码。
结果:
0.22647905349731
第2种方式稍微慢一点,因为首先把值分配给了一个变量?
执行50次发现,并不是每次都是第一个方法快。
如下是前6次的执行结果。
0.17937803268433
0.17579483985901
0.18131899833679
0.21023297309875
0.16258692741394
0.16793894767761
0.24772715568542
0.2319028377533
0.2322998046875
0.22303509712219
0.21346497535706
0.19454884529114
本节内容:
查找php数组的最大值与最小值
例子:
/**
* 在php数组中,查找最大值与最小值
* by www.
*/
function maxMin(Array $arr) {
$cmpTime = 0;
$count = count($arr);
$big = $small = $arr[0];
for($i = 1; $i < $count; $i++) {
$cmpTime++;
if($big > $arr[$i]) {
$cmpTime++;
if($small > $arr[$i]) {
$small = $arr[$i];
}
} else {
$big = $arr[$i];
}
}
echo "ArrLeng: " . $count . "<br>";
echo "CmpTime: " . $cmpTime . "<br>";
echo "Big: " . $big . "<br>";
echo "Small: " . $small . "<br>";
}
$arr = array(4, 6, 8, 1, 5, 4, 3, 9, 11, 3, 22, 100, 55, 0, 4, -1, 31, 210, -10);
maxMin($arr);
?>
输出结果:
ArrLeng: 19
CmpTime: 29
Big: 210
Small: -10
说明:以上代码在查找时,比较是n次,而最坏时会2n次。
接下来分享一个稳定的1.5n次比较的方法,代码:
<?php
/**
* 在php数组中,查找最大值与最小值
* by www.
*/
function maxMin(Array $arr) {
$cmpTime = 0;
$count = count($arr);
$biggest = $smallest = $arr[$count - 1];
#每次取出两个元素,比较两个元素的大小再与最大值和最小值比较
for($i = 0; $i < $count - 1; $i += 2) {
$cmpTime++;
if($arr[$i] > $arr[$i + 1]) {
$bigger = $arr[$i];
$smaller = $arr[$i + 1];
} else {
$bigger = $arr[$i + 1];
$smaller = $arr[$i];
}
$cmpTime++;
if($bigger > $biggest) {
$biggest = $bigger;
}
$cmpTime++;
if($smaller < $smallest) {
$smallest = $smaller;
}
}
echo "ArrLeng: " . $count . "<br>";
echo "CmpTime: " . $cmpTime . "<br>";
echo "Big: " . $biggest . "<br>";
echo "Small: " . $smallest . "<br>";
}
$arr = array(4, 6, 8, 1, 5, 4, 3, 9, 11, 3, 22, 100, 55, 0, 4, -1, 31, 210, -10);
maxMin($arr);
?>
输出结果:
ArrLeng: 19
CmpTime: 27
Big: 210
Small: -10