0

ID の配列を取り、ID のプライマリ配列キーを検索できるクラス/メソッドを作成しようとしています。キーが見つかった場合は、内部配列を検索し、他の ID が存在しないことを確認します。

例:

$ids = array(120, 123, 456, 789);

$primary[120] = array(456,888,99);

$primary[111] = array(789, 886,120);

ID-456 が存在するため、ID-120 は無効であると出力されます。

私は foreach を実行することを見てきましたが、理解するには少し複雑すぎて、これを行うためのより簡単な方法があるに違いないと感じていますか? おそらくarray_walkを見ていますが、うまく機能していません。

これが私が試していることですが、うまくいきません...

$ids = array(125,126,182);
    $primary = array();
    $primary['125'] = array(126,301,302,403);

        foreach ($primary as $keyP => $valueP) 
        {
            if(in_array($keyP, $ids)
            {
            echo 'Woops, Primary key found!';
            }
        }
4

2 に答える 2

0

うーん、in_array() 関数を使用するのはどうですか?

ids 配列にない場合にのみ値を割り当てます。

foreach ( $primary as $keyP => $valueP ) {
    if ( in_array( $keyP, $ids) {
        echo 'Woops, Primary key found!';
    }
}

では、上記の方法ではうまくいきませんでした。

$ids = array(1, 5, 10);

$flipIds = array_flip($ids);

print_r( $flipIds );

// This ids are ok, so, it shows the position in the original array
echo $flipIds[1]; //  OK, 0 as answer
echo $flipIds[5]; //  OK, 1 as answer
echo $flipIds[10]; // OK, 2 as answer

// Dirty Trick, don't show Notice!
// This shows 'Waps' because it's not in the array (originally a Notice, :P)
if ( @$flipIds[2] ) {
    echo 'ok';
} else {
    echo 'waps';
}

update2

あなたが正しい値をとっていないので、うまくいかないと思います:P. これを試して:

$ids = array(125,126,182);
$primary = array();
$primary['125'] = array(126,301,302,403);

foreach ($primary as $keyP => $valueP) {
    if ( in_array( $keyP, $ids ) {
            echo 'Woops, key From $primary is a Primary key!';
    }
    foreach ($valueP as $id ) {
        if ( in_array($id, $ids) ) {
            echo 'Woops, Primary key found!';
        }
    }
}

126 が存在するため、「Woops, Primary key found」が出力されます:D

于 2013-08-05T18:38:18.083 に答える