2

私は array_search に少し苦労してきました。今は理解できたと思いますが、コードの実行方法の背後にあるロジックを確実に理解したいと思っています。

そもそも配列に要素がない場合は要素を配列に追加し、要素がある場合は削除する関数を作成しようとしています。シンプルですね。

$k = array_search($needle, $haystack)
if ( $k === FALSE ) {
    $haystack[] = $needle;
} else {
    unset($haystack[$k]);
}

これはこれを書くための最も効率的な方法ですか?$k の値を割り当てると同時に、その値が FALSE であるか、それ以外 (0 を含む) であるかを確認する方法が必要なようです。

4

3 に答える 3

3

この方法でコードを短縮できます。

if (($k = array_search($needle, $haystack)) === FALSE) {
    $haystack[] = $needle;
} else {
    unset($haystack[$k]);
}

コードの最初の行は、検索を実行し、返された値を $k に格納し、この値が FALSE と正確に等しいかどうかをチェックします。

ドキュメント: array_search

于 2013-03-29T16:15:26.953 に答える
0

あなたのコードは問題ありませんが、次の方法で実行できます:-

if (($k = array_search($needle, $haystack)) == FALSE) 
{
$haystack[] = $needle;
} 
else 
{
unset($haystack[$k]);
}
于 2013-03-29T16:27:49.107 に答える
0

再利用できるように関数でラップする以外に、あなたが持っているものはうまく機能します。他の例のほとんどは、すでに書いたものを書き直しただけです。

<?php
$haystack = array(
'5','6','7',
);

$needles = array('3','4','2','7');
print_r($haystack);


function checker($needle,$haystack){
    $k = array_search($needle, $haystack);
    if ( $k === FALSE ) {
        $haystack[] = $needle;
    } else {
        unset($haystack[$k]);
    }
    return $haystack;
}


foreach($needles as $value){
    $haystack = checker($value,$haystack);
    print_r($haystack);

}



?>
于 2013-03-29T16:59:35.043 に答える