简体   繁体   English

如何比较两个数组,看看它们是否有共同点(PHP)

[英]How to compare two arrays and see if they have anything in common(PHP)

I need to compare two arrays and pass variable values according to the result. 我需要比较两个数组并根据结果传递变量值。 I loop $additionalTestsAvailable, if $additionalTestsSelected has a value in $additionalTestsSelected, passing 'Yes' to additionalTestsSelected, else passing ''. 如果$ additionalTestsSelected在$ additionalTestsSelected中有一个值,则将$ additionalTestsAvailable循环,将“是”传递给AdditionalTestsSelected,否则传递”。 But the result are all ''. 但结果全是''。 It shouldn't like this. 它不应该这样。 Anything wrong with my code? 我的代码有问题吗?

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

foreach($additionalTestsAvailable as $test) {

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

I suspect your tests are coming out of the get functions as different objects even when they have the same name so the in_array comparison is failing. 我怀疑您的测试是从get函数作为不同的对象发出的,即使它们具有相同的名称,因此in_array比较也失败了。 You can workaround this by looping manually and comparing the tests using their names: 您可以通过手动循环并使用测试名称进行比较来解决此问题:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM