这段代码有什么问题?我尝试使用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>";
}
?>
答案 0 :(得分:3)
您需要使用stripos() === false
,就好像它们匹配一样,它会返回0
,这是==到false
。
您的参数混合在一起,应为stripos($path2, $path1)
。
您需要检查$paths2
中的所有值,直到找到它所在的值。您说它在第一个$paths2
之后没有找到它。在$flag = true;
循环之间设置foreach()
的标记。如果$flag == false
,请设置stripos($path2, $path1) !== false
,而不是在第二个foreach中回显。在第二个循环结束后,但在第一个循环结束之前,输出$flag == false
。
即
foreach ($paths1 as $path1)
{
$flag = true;
foreach ($paths2 as $path2)
{
if (stripos($path2, $path1) !== false)
{
$flag = false;
break;
}
}
if($flag)
echo $path1;
}
注意:没有测试,但应该可以工作。
答案 1 :(得分:1)
stripos
的论据是倒退的。而不是:
if (stripos($path1, $path2) == False)
你想:
if (stripos($path2, $path1) === false)