澳门新葡萄京官网首页php在数组中查找指定值的方法

本文实例讲述了php在数组中查找指定值的方法。分享给大家供大家参考。具体如下:

php检查数组

对于一维数组我们可以如下操作

php中有两个函数可以判断数组中是否包含指定的值,分别是:array_search($value,
$array)和in_array($value,
$array),array_search可以找出指定的值在数组中出现的位置,in_array函数只判断数组中是否存在指定的值,返回bool值

1、in_array($need,$array,[,$strict=false])检查$array中是否有$need,若$strict为true,则严格检查数据类型

in_array  ‘函数在数组中搜索给定的值。in_array(value,array,type)type
可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

输出结果如下

2、implode($oper,$array)将$array中元素以$oper为接点,拼接成字符串并返回

array_key_exists ‘array_key_exists()
函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回
true,否则返回 false。array_key_exists(key,array)

Search 1: 1
Search 2: 0
Search 3:

3、count($array),返回$array中的元素个数

array_search ‘array_search() 函数与 in_array()
一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回
false。array_search(value,array,strict)

希望本文所述对大家的php程序设计有所帮助。

php数组指针函数

从这里来看,在数据量不大的时候,比如小于1000,查找用哪一种都行,都不会成为瓶颈;
当数据量比较大的时候,用array_key_exists比较合适。
当然这里array_key_exists占用的内存比较大,经测算

1、current($array)返回$array的当前元素

二分法查找数组是否包含某一元素,兼容正反序,代码实现:

2、end($array)移动指针到最后返回$array的最后一个元素

 代码如下

3、prev($array)向反方向移动$array内部指针一个单位,并返回移动后的指针指向的元素

<?php

4、reset($array)移动指针到第一个元素,并返回

$searchValue = (int)$_GET[‘key’];

5、next($array)向正方向移动指针一个单位,并返回元素

function search(array $array, $value)
{
$max = count($array)-1;
$min = 0;
$isAscSort = $array[$min] < $array[$max];

php数组键和值

while (TRUE) {
$sum = $min+$max;
$midKey = (int)($sum%2 == 1 ? ceil($sum/2) : $sum/2);

1、key($array)返回数组当前元素的键名

if ($max < $min) {
return -1;
} else if ($value == $array[$midKey]) {
return 1;
} else if ($value > $array[$midKey]) {
$isAscSort ? $min = $midKey+1 : $max = $midKey-1;
} else if ($value < $array[$midKey]) {
$isAscSort ? $max = $midKey-1 : $min = $midKey+1;
}
}
}

2、array_key_exists($key,$array)查找$array中是否有$key这个键或索引

$array = array(
‘4’, ‘5’, ‘7’, ‘8’, ‘9’, ’10’, ’11’, ’12’
);
// 正序
echo search($array, $searchValue);

3、array_keys($array,[$value],[$strict=false])返回$array的所有键或索引组成的索引数组,如果存在参数$value,则查找$value,有就返回其键

// 逆序
rsort($array);
echo search($array, $searchValue);

4、array_values($array)返回数组中所有的值

例二

5、array_search($need_value,$array)查找$array中是否存在值$need_value,有就返回其键

PHP 查找数组第i小元素

php填补数组

 代码如下

1、array_pad($array,$num,$value)用$value填补数组$array元素个数到$num

<?php
     #随机选择第i小的数字,用随机快排实现
    
     #交换元素
     function swap(&$arr, $i, $j) {
         $temp = $arr[$i];
         $arr[$i] = $arr[$j];
         $arr[$j] = $temp;
     }
 
     #随机划分
     function randomized_partition(&$arr, $begin, $end) {
         $rand_inx = rand($begin, $end);
         swap($arr, $begin, $rand_inx);
         return partition($arr, $begin, $end);
     }
 
     #划分
     function partition(&$arr, $begin, $end) {
         #以第一个元素作为中枢元素
         $pivot = $begin;
         $low = $begin;
         $high = $end;
 
         while ($low < $high) {
             while ($low < $high && $arr[$low] <=
$arr[$pivot]) {
                 $low++;
             }
 
             while ($low < $high && $arr[$high] >=
$arr[$pivot]) {
                 $high–;
             }
 
             swap($arr, $low, $high);
         }
 
         #交换中枢元素
         if ($arr[$pivot] < $arr[$low]) {
             $low–;
         }
         swap($arr, $pivot, $low);
         return $low;
     }
 
     #快速排序,此处没用到
     function quick_sort(&$arr, $begin, $end) {
         $q = randomized_partition($arr, $begin, $end);
         if ($q > $begin) {
             quick_sort($arr, $begin, $q – 1);
         }
         if ($q < $end) {
             quick_sort($arr, $q + 1, $end);
         }
     }
 
     #选取第i小的数
     function
randomized_select(&$arr,
$begin, $end, $i) {
         if ($begin == $end) {
             return $arr[$begin];
         }
 
         $q = randomized_partition($arr, $begin, $end);
         $k = $q – $begin + 1; #k代表小于等于q的元素个数
 
         if ($k == $i) { #如果k=i,说明q就是第i小的元素坐标
             return $arr[$q];
         } else if ($i < $k) {
#如果i<k,说明第i小的元素位于q的左边
             return randomized_select($arr, $begin, $q – 1, $i);
         } else { #第i小的元素位于q的右边,此时查找右边的第i-k小的元素
             return randomized_select($arr, $q + 1, $end, $i – $k);
         }
     }
 
     $arr = array(1, 5, 3, 7, 0, 0, 8, 4, 2, 9, 11);
     $t = randomized_select($arr, 0, count($arr) – 1, 8);
     print_r(“The 8th minimum element: {$t}”);
     echo “<br>”;
     quick_sort($arr, 0, count($arr) – 1);
     print_r($arr);
 ?>

2、array_fill($start,$num,$value)

3、array_fill_keys($keys,$value)

php随机取出数组元素的键,数组排序

1、array_rand($array,$num)

2、sort($array)

3、asort($array)保持索引关系

4、arsort($array)逆向排序保持索引关系

5、rsort($array)逆向排序

6、shuffle($array)将数组打乱

php遍历数组

1、for()

2、foreach

3、each()、list()

$array = [‘a’=>’sdfs’,’b’=>’dsfsf’];
list($key,$val)=each($array);
echo “$key => $val”.”n”;
print_r(each($array)) ;

打印结果:a => sdfs Array ( [1] => dsfsf [value] => dsfsf
[0] => b [key] => b )

$array = [‘sdfs’,’dsfsf’];

list($a[0],$a[1])=$array;($array只能是索引数组)

php7打印结果:Array ( [0] => sdfs [1] => dsfsf )

php7下是正序赋值,php5是倒序赋值

php数组拆分合并

1、array_chunk($array,$size,[bool])将数组$array分成成多个数组,并返回多维数组

$array = [[‘a’=>’sdfs’,’b’=>’dsfsf’],’gff’,’fdf’,’dffd’];

print_r(array_chunk($array, 2));打印结果:Array ( [0] => Array (
[0] => Array ( [a] => sdfs [b] => dsfsf ) [1] => gff
) [1] => Array ( [0] => fdf [1] => dffd ) )

print_r(array_chunk($array, 2,true));打印结果:Array ( [0] =>
Array ( [0] => Array ( [a] => sdfs [b] => dsfsf ) [1]
=> gff ) [1] => Array ( [2] => fdf [3] => dffd )
)(保留原来键名)

2、array_merge($array……)如果键名相同,则保留后面的键值,使用“+”,则是保留前面的键值

3、array_unshift($array,$value……)在数组开头插入一个或多个元素

4、array_shift()将数组开头一个元素移除,并返回,数字键名重新排序,文字键名不变

5、array_push($array,$value……)在数组末尾插入一个或多个元素

6、array_pop()将数组末尾一个元素移除,并返回,数字键名重新排序,文字键名不变

php数组截取元素

1、array_slice($array,$start,[$length]),从$start开始,截取指定$length长度的元素

2、array_splice($array,$start,[$length=0],[$value……])从$start开始,删除指定$length长度的元素,并插入指定元素

3、is_array()判断是否为数组

4、array_sum()计算数组元素值的和

5、array_product()计算所有数组元素的乘积

6、array_flip()交换数组中的键和值

发表评论

电子邮件地址不会被公开。 必填项已用*标注