2017-06-15 18 views
4

を数える私はこのような$検索$データ変数から配列データの束持っている:私は何をしたいか検索複数の配列の値と、検索結果

$data = array(
    array(1, 2, 3), 
    array(1, 2, 3, 4, 7, 13) 
); 

$search = array(
    array(1, 2), 
    array(1, 3), 
    array(6, 13), 
    array(7, 13) 
); 

$result = array(); 

を各1ペアの場合1と2は[$データに一致するものを持っている:$データ変数内のすべてのデータを$検索試合から(実施例1及び2)配列データのそれは試合(例でどのように多くのデータのカウントされます0]$ data [1]ですので、結果は2)である必要があります。そして、$結果にカウント結果を$ searchのキーに基づいて保存します。ここで

は私が探していた結果だ。

$result = array(
    0 => 2, 
    1 => 2, 
    2 => 0 
    3 => 1 
); 

そして、これは私のコードです:$は変数をもたらすために、私はカウント結果を保存する場合は、上記の私の実験のよう

for ($i=0; $i<count($search); $i++) { 
    for ($j=0; $j<count($data); $j++) { 
     if (count(array_intersect($search[$i], $data[$j])) > 1) { 
      array_push($result[$i], "1"); 
     } 
    } 
} 

array_push()は、パラメータ1が配列になることを期待しています。しかし、私は$検索変数にarray_pushを使用して、カウント結果を保存しようとするならば、それはこのような結果に私を与える:

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 1 
      [3] => 1 
     ) 

    [1] => Array 
     (
      [0] => 1 
      [1] => 3 
      [2] => 1 
      [3] => 1 
     ) 

    [2] => Array 
     (
      [0] => 6 
      [1] => 13 
     ) 

    [3] => Array 
     (
      [0] => 7 
      [1] => 13 
      [2] => 1 
     ) 

) 

を結果は、私が欲しいものに近いですが、まだ私が見ているものを好きではありませんために。私は本当にこれを行う方法をもう考えていません。

+0

結果は '$結果=配列( 0 => 2、 1 => 2、 2 => 1' 3 =でなければなりません> 1 ); ' –

答えて

2

、このような配列の値をカウントすることができます。私はそれが次のコードで動作するようになった:

foreach($search as $index => $searchArray) { 
    $result[$index] = 0; 
    foreach($data as $dataArray) { 
     if (count(array_intersect($searchArray, $dataArray)) > 1) { 
      $result[$index]++; 
     } 
    } 
} 
+0

ありがとう、それは非常にうまく動作する、私の心の中で交差しないでくださいそれは+ +演算子を使用する必要があります:| –

0

あなたは$result[$i]が配列ではなく、array_pushが入力として配列を期待するので、あなたがエラーを取得する

$result = array(); 
foreach($search as $k => $v){ 
    $result[$k] = array_count_values($data[0])[$v[0]] + array_count_values($data[1])[$v[1]]; 

} 
print_r($result); 
3
foreach ($search as $key => $value) { 
    $count = 0; 
    if(in_array($value[0], $data[0]) && in_array($value[1], $data[0])){ 
     $count += 1; 
    } 
    if(in_array($value[0], $data[1]) && in_array($value[1], $data[1])){ 
     $count += 1; 
    } 
    $result[$key] = $count; 
} 
関連する問題