此代码有什么问题?我尝试过使用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>";
}
?>
-
您需要使用
stripos() === false
,就好像它们匹配一样,它将返回0
,即==到false
。 -
您已经混合了参数,它应该是
stripos($path2, $path1)
。 -
你需要检查
$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)