0

配列 1 のいずれかの要素が含まれている場合、配列 2 の要素を削除したいと考えています。調査の結果、array_filter を使用する可能性があることがわかりましたが、これを行う方法について混乱しました。次に、配列キーをリセットする必要があります。誰でも方法を提案できますか?

たとえば、「123998」を正確に含む要素は配列 2 から削除されます。「1239986」は削除されません。

配列 1

Array
(
    [0] => 123709
    [1] => 123797
    [2] => 124089
    [3] => 124153
)

アレイ 2

Array
(
    [0] => ../fish/cod/123709-sdfgsdfgvsadfg.pdf
    [1] => ../fish/cod/123797-sdfgsdfg-sdfg-sdfgs-dfg-sd.pdf
    [2] => ../fish/cod/123998-sdfgsdf-gsdf-gsd-fg-sdfg-.pdf
    [3] => ../fish/cod/123998-sdfgsdfg-sdf-gsdfg-sdf-g.pdf
    [4] => ../fish/cod/123998-sdfg.pdf
    [5] => ../fish/cod/123998-sdfgsdfgsfdg-sdfg.pdf
    [6] => ../fish/cod/124089-sdfgsdfg-sdfg-sdfg-.pdf
    [7] => ../fish/cod/124153-sdfgsdfgsdf-gsdfg.pdf
)
4

5 に答える 5

0

はい、array_filterいいですね。使用方法は次のとおりです。

$pruned_array = array_filter($array2, function($val2) use ($array1) {
  foreach($array1 as $val1) {
    if (strpos($val2, val1) !== false) 
      return $val2;
  }
});

チェックする値の位置が常に同じ場合 (または同じパターンに従う場合) は、 を使用する代わりに、この部分だけをチェックする方が効率的かもしれませんstrpos

于 2014-09-03T11:58:31.047 に答える
0

これを試して

$arr1uが最初の配列を次のように定義し、2番目の配列を次のように定義したとしましょう$arr2

foreach($arr2 as $key => $value)
{
   foreach($arr1 as $subkey => $subvalue)
   {
      if(strpos($subvalue, $value))
        unset($arr2[$key]);
   }
}
print_r($arr2);
于 2014-09-03T11:59:28.927 に答える
-1

以下のコードを使用して、配列 1 の要素のいずれかが含まれている場合に配列 2 の要素を削除しますが、その前に「123709」などの数値を取得するために配列 2 を分解する必要があります。

$array1 = array('1', '2', '3', '4');
$array2 = array('5', '6', '7', '1');
$temp = array();
foreach ($array2 as $key => $value)
{
   // Check the value hasn't already been found:
   if (!in_array($value, $array1))
   {
    //pushing the non duplicate value in temp array
    array_push($temp, $value);
   }
}
 //assign temp array to array2
 print_r($array2=$temp);

?>

于 2014-09-03T13:09:52.163 に答える