2011-10-07 3 views
0

2つの配列を比較し、結果に応じて変数値を渡す必要があります。 $ additionalTestsSelectedに$ additionalTestsSelectedの値がある場合は、$ additionalTestsAvailableをループし、additionalTestsSelectedに 'Yes'を渡します。それ以外の場合は ''を渡します。しかし結果はすべて ""です。これは好きではないはずです。私のコードに間違いがありますか?2つの配列を比較して共通点を確認する方法(PHP)

$additionalTestsSelected = $appointmentTime->getAdditionalTestsSelected(); 
$additionalTestsAvailable = $appointmentTime->getAdditionalTestsAvailable(); 

foreach($additionalTestsAvailable as $test) { 

    if(in_array($test,$additionalTestsSelected)){ 
     $additionalTests[$test->getName()] = 'Yes'; 
    }else{ 
     $additionalTests[$test->getName()] = ''; 
    } 
} 

答えて

0

は、私は彼らがin_array比較が失敗しているので、同じ名前を持っている場合でも、あなたのテストは異なるオブジェクトとして取得機能から出てきている疑いがあります。手動でループし、名前を使用してテストを比較することで、これを回避できます。

foreach ($additionalTestsAvailable as $test) { 
    $result = ''; 
    foreach ($additionalTestsSelected as $k) { 
     if ($test->getName() == $k->getName()) { 
      $result = 'Yes'; 
      break; 
     } 
    } 
    $additionalTests[$test->getName()] = $result; 
} 
+0

はい、あなたは正しいです。それはオブジェクトです。ありがとう –