2016-11-27 1 views
0

を使用して、2つのアレイ間の差を検出私が行うと... Bに私は2つの配列を持っていると私は同じように、それらの間の異なる何であるかを確認する必要がありlaravel

$temp = import_temp::select('cod_disciplina', 'cod_turma', 'hr_inicio', 'hr_fim', 'dia_semana')->get(); 
     $turmas; 
     foreach($temp as $t) 
     { 
      $turmas = Horario::select('cod_disciplina', 'cod_turma', 'hr_inicio', 'hr_fim', 'dia_semana') 
      ->whereIn('cod_disciplina', $temp->lists('cod_disciplina')) 
      ->whereIn('cod_turma', $temp->lists('cod_turma')) 
      ->where('ano_semestre', $ano_semestre)->get(); 
     } 

を比較:

print_r($turmas->toArray()); 
print_r($temp->toArray()); 

は私が取得:
enter image description here

これらのキーを比較して、changednewまたはmissingであることを確認するにはどうすればよいですか。

array_diff_assocで作業しようとしましたが、私は次のエラーを取得:

Array to string conversion

array_diff_assoc($temp->toArray(), $turmas->toArray()); 

はまたThis that I found in another answer in a similar questionを試みたが、うまくいきませんでした。

答えて

0

まず、配列を比較するために、独自の関数を定義します。

function arrayCmp($a, $b) { 
    if ($a < $b) { 
     return -1; 
    } elseif ($a > $b) { 
     return 1; 
    } else { 
     return 0; 
    } 
} 

あなたは$aボットではない$bに存在する要素をしたい場合は、その後、あなたが呼び出す:

$diff = array_udiff($a, $b, 'arrayCmp'); 
+0

を私はすべて何を持っている場合これらの要素のうちの1つまたは複数の要素の両方の内部の要素には、異なる値があります。 – PlayHardGoPro

+0

あなたが言ったことは矛盾です。いくつかの要素が異なる値を持つ場合、それらは異なる要素であり、両方の内部にあることはできません。 –

関連する問題

 関連する問題