20

次の 2 つの配列と、array_diff を見つけるためのコードがあります。

$obs_ws = array("you", "your", "may", "me", "my", "etc");
$all_ws = array("LOVE", "World", "Your", "my", "etc", "CoDe");

$final_ws = array_diff($all_ws, $obs_ws);

出力配列を次のように与える上記のコード:

$final_ws = array("LOVE", "World", "Your", "CoDe");

しかし、私はそれが欲しい:

$final_ws = array("LOVE", "World", "CoDe");

「Your」は削除されないことに注意してください。これは、「Y」が 2 番目の配列で大文字になっていることが原因である可能性があります。「Your」も除外したいのでarray_diff、PHPには大文字と小文字を区別しないバージョンがあります。

array_udiffを試しましたが、問題でこれを使用する方法が正確にわかりません

ありがとう

4

2 に答える 2

66

関数strcasecmpに 3 番目のパラメーターとして渡してみてください。array_udiff

<?php
$obs_ws = array("you", "your", "may", "me", "my", "etc");
$all_ws = array("LOVE", "World", "Your", "my", "etc", "CoDe");

$final_ws = array_udiff($all_ws, $obs_ws, 'strcasecmp');

print_r($final_ws);

出力:

Array
(
    [0] => LOVE
    [1] => World
    [5] => CoDe
)
于 2009-12-09T18:36:34.480 に答える
3

あなたは正しい軌道に乗っていました。これは私の提案です:

function array_casecmp($arr1,$arr2){
    return array_udiff($arr1,$arr2,'strcasecmp');
}


$obs_ws = array("you", "your", "may", "me", "my", "etc");
$all_ws = array("LOVE", "World", "Your", "my", "etc", "CoDe");
var_dump( array_casecmp($all_ws,$obs_ws) );
于 2009-12-09T18:52:19.623 に答える