数组格式如下:
Array
(
    [0] => Array
        (
            [0] => ID
            [1] => Nickname
        )    [1] => Array
        (
            [0] => 29
            [1] => Test1
        )    [2] => Array
        (
            [0] => 654
            [1] => Xxx1
        ))比如要找到ID=29的这条记录,我现在是使用foreach遍历数组
foreach($array as $value){
if($value[0]==29)
{
//判断条件成立,进行相关操作
}
}
请问还有没有更高效的方法?可能有人说用in_array函数,但是假如记录中除了id为29的外,nickname这个键值也有可能会出现29的情况,用这个函数查询就会有问题。

解决方案 »

  1.   

    $array[1]高效了
    in_array不行那用array_keys($array, 29)或者array_search(29,$array)
      

  2.   


    $array = array(0 => array('id', 'name'), array('29', 'test'), array('65', '29'));
    array_walk($array, $theValue = 'checkvalue', 29);if ($theValue == true) {
        echo 'ok';
    }
    function checkvalue($value, $key, $number)
    {
        if ($value[0] == $number) {
            //something
            return true;
        }
    }
    实际测试 速度要远远快于用foreach比较值.
      

  3.   


    xdebug 或者 php自带的时间函数 产生一个原始时间一个结束时间求差值...
      

  4.   


    少壮不努力newnew徒伤悲...其实,我觉得应该有更好的做法,等那个怪署黍过了年来给大家上课。
      

  5.   

    代码有误.修正如下
    $trueFalse=false;
    $array = array(0 => array('id', 'name'), array('29', 'test'), array('65', '29'));
    array_walk($array,'checkvalue', 29);
    echo $trueFalse;
    function checkvalue($value, $key, $number)
    {
        global $trueFalse;
        if ($value[0] == $number) {
            //something
            $trueFalse=true;
            return true;
        }
    }