ホームページ  >  記事  >  バックエンド開発  >  最適な計算方法を模索中

最適な計算方法を模索中

WBOY
WBOYオリジナル
2016-06-13 13:06:16893ブラウズ

最適な計算方法を探しています
配列の最適な計算方法を探していますが、まったくわかりません
配列が 2 つあります:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$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
)



まず、$arr1 のすべての配列の pos のうち、$arr2 の pos の連続位置を見つけます。連続位置が一致している場合は、ID によって逆順に位置を取得します

上記のコードに示すように、取得する必要がある結果は次のとおりです: $arr2 は $arr1 の
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
array(
        'id'=>4,
        'pos'=>4
    ),





より上です------解決策----- ---------------
PHP コード


<?php
$arr1=配列(
    配列(
        'id'=>1、
        'pos'=>1
    )、
    配列(
        'id'=>2、
        'pos'=>2
    )、
    配列(
        'id'=>3、
        'pos'=>3
    )、
    配列(
        'id'=>4、
        'pos'=>4
    )、
    配列(
        'id'=>5、
        'pos'=>5
    )、
    配列(
        'id'=>6、
        'pos'=>6
    )、
);

$arr2=配列(
    'id'=>7、
    'pos'=>4
);

関数 array_insert($arr1, $arr2)
{
    $インデックス = 1;
    $挿入 = false;
    foreach($arr1 として $v)
    {
        if ($v['pos'] == $arr2['pos']) {
            if ($v['id'] < $arr2['id']) {
                array_splice($arr1, $index - 1, 0, array($arr2));
                壊す;
            } それ以外 {
                $挿入 = true;
            }
        else if ($insert) {
            壊す;
        }
        $インデックス++;
    }
    if ($insert) {
        array_splice($arr1, $index - 1, 0, array($arr2));
    }
    $arr1 を返します。
}
$arr1 = array_insert($arr1, $arr2);
print_r($arr1);

$arr2=配列(
    'id'=>3、
    'pos'=>4
);
$arr1 = array_insert($arr1, $arr2);
print_r($arr1);

$arr2=配列(
    'id'=>5、
    'pos'=>6
);
$arr1 = array_insert($arr1, $arr2);
print_r($arr1);
?>
<br><font color="#e78608">------解決策------------------</font><br>
PHP コード
 の場合
$arr1=配列(
    配列(
        'id'=>1、
        'pos'=>1
    )、
    配列(
        'id'=>2、
        'pos'=>2
    )、
    配列(
        'id'=>3、
        'pos'=>3
    )、
    配列(
        'id'=>4、
        'pos'=>5
    )、
    配列(
        'id'=>5、
        'pos'=>5
    )、
    配列(
        'id'=>6、
        'pos'=>6
    )、
);

$arr2=配列(
    'id'=>7、
    'pos'=>4
);<div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。