0

単一次元と多次元配列の2つの配列があり、多次元はコンマです

別れた

$singledim =Array
(
    [0] => 333
    [1] => 673
    [2] => 434
    [3] => 67

)

$multidim = Array
(
    [0] => Array
        (
            [0] => 22
            [1] => 3336,673,34,342,432,23,323,434,765675765,7657567
        )

    [1] => Array
        (
            [0] => 24
            [1] => 2424,10
        )

    [2] => Array
        (
            [0] => 28
            [1] => 23,12,13,14,15,16
        )
............
}

in_array を使用して、単一次元配列の値が存在することを確認したい.Belwoは私が試したものです..

<?
foreach($multidim  as $multi)
{
  if(in_array($singledim,$multi[1])
  {

  }
  $i++;
}
?>
4

3 に答える 3

1
foreach($multidim as $multi){
    foreach($singledim as $single){
        $temp_array = explode(',',$mutli[1]);
        if(in_array($single, $temp_array)){
            // do stuff
        }
    }
}

配列を渡す場合、一致するためには、同じ配列グループが干し草の山にまったく同じ方法で存在する必要があります。

于 2013-05-01T19:48:02.973 に答える
0

あなたはしたくないin_array()。あなたがしたいstrpos(...) !== false。誤検知の対象になることに注意してください。たとえば、 を検索している場合11221などは誤って一致します。構造を正規化する必要があり、サブ要素の個々の値はそれぞれ独自の[1]配列要素である必要があります。

于 2013-05-01T19:53:40.663 に答える
0

$multi[1]配列ではありません。コンマ区切りの文字列です。

explode文字列から配列を作成するために使用できます。

$vals = explode(',' ,$multi[1]);
if(in_array($singledim, $vals)
{

}

ただし、これは文字列の場合にのみ機能$singledimします。

コメントに記載されているように、配列全体が 2 番目の配列の文字列と同じかどうかを確認しています。最初の配列を文字列に変換してから、それらが等しいことを確認できます。

$singleDimStr = implode(',' ,$singledim);
if($singleDimStr == $multi[1]) { 
}
于 2013-05-01T19:53:41.400 に答える