比较两个阵列和回波差异


Compare two arrays and echo difference

此代码有什么问题?我尝试过使用array_udiff,但没有成功。

<?php
#I want to echo values of $paths1 that do not appear (even partially) on $paths2.
$paths1 = array('one', 'two', 'three');
$paths2 = array('twenty one', 'twenty two');
foreach ($paths1 as $path1)
    {
    foreach ($paths2 as $path2)
        {
        if (stripos($path1, $path2) == False)
            {
            echo $path1 . "<br>";
            break;
            }
        }
    echo "<br>";
    }
?>
  1. 您需要使用stripos() === false,就好像它们匹配一样,它将返回0,即==到false

  2. 您已经混合了参数,它应该是stripos($path2, $path1)

  3. 你需要检查$paths2中的所有值,直到你找到它所在的值。你说它在第一个你没有找到的值之后不在任何$paths2中。在foreach()循环之间设置一个$flag = true;的标志。如果stripos($path2, $path1) !== false,只需设置$flag == false。在第二个循环结束之后,但在第一个循环之前,输出if $flag == false

foreach ($paths1 as $path1)
{
    $flag = true;
    foreach ($paths2 as $path2)
    {
         if (stripos($path2, $path1) !== false)
         {
             $flag = false;
             break;
         }
    }
    if($flag)
        echo $path1;
}

注意:没有测试,但应该有效。

stripos的参数是向后的。代替:

if (stripos($path1, $path2) == False)

您想要:

if (stripos($path2, $path1) === false)