• 技术文章 >后端开发 >php教程

    谋求最优的计算方法

    2016-06-13 10:53:12原创277
    寻求最优的计算方法
    寻求最优的计算数组方法,实在搞不出来了
    我有两个数组分别是:
    PHP code
    $arr1=array(    array(        'id'=>1,        'pos'=>1    ),    array(        'id'=>2,        'pos'=>2    ),    array(        'id'=>3,        'pos'=>3    ),    array(        'id'=>4,        'pos'=>4    ),    array(        'id'=>5,        'pos'=>5    ),    array(        'id'=>6,        'pos'=>6    ),)$arr2=array(    'id'=>7,    'pos'=>4)


    首先查找$arr2的pos在$arr1中的所有数组的pos中的顺序位置,如果顺序位置一致则按照id倒序获取位置

    如上面的代码则应该获取的结果为:$arr2位于$arr1的
    PHP code
    array(        'id'=>4,        'pos'=>4    ),


    之上

    ------解决方案--------------------
    PHP code
    1,        'pos'=>1    ),    array(        'id'=>2,        'pos'=>2    ),    array(        'id'=>3,        'pos'=>3    ),    array(        'id'=>4,        'pos'=>4    ),    array(        'id'=>5,        'pos'=>5    ),    array(        'id'=>6,        'pos'=>6    ),);$arr2=array(    'id'=>7,    'pos'=>4);function array_insert($arr1, $arr2){    $index = 1;    $insert = false;    foreach($arr1 as $v)    {        if ($v['pos'] == $arr2['pos']) {            if ($v['id'] < $arr2['id']) {                array_splice($arr1, $index - 1, 0, array($arr2));                break;            } else {                $insert = true;            }        } else if ($insert) {            break;        }        $index ++;    }    if ($insert) {        array_splice($arr1, $index - 1, 0, array($arr2));    }    return $arr1;}$arr1 = array_insert($arr1, $arr2);print_r($arr1);$arr2=array(    'id'=>3,    'pos'=>4);$arr1 = array_insert($arr1, $arr2);print_r($arr1);$arr2=array(    'id'=>5,    'pos'=>6);$arr1 = array_insert($arr1, $arr2);print_r($arr1);?>
    ------解决方案--------------------
    PHP code
    $arr1=array(    array(        'id'=>1,        'pos'=>1    ),    array(        'id'=>2,        'pos'=>2    ),    array(        'id'=>3,        'pos'=>3    ),    array(        'id'=>4,        'pos'=>5    ),    array(        'id'=>5,        'pos'=>5    ),    array(        'id'=>6,        'pos'=>6    ),);$arr2=array(    'id'=>7,    'pos'=>4);
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:array arr gt pos id
    千万级数据并发解决方案

    相关文章推荐

    • PHP函数及作用域知识详解• 各位老师,帮小弟我看看能不能改成支持可分页• PHP中SESSION不能跨页传递有关问题的解决方法• .htaccess资料 url重定向• php的静态方法调用有关问题,求大牛解答
    1/1

    PHP中文网