嗨我有两个数组,我想检查它们是否有任何相等(相同)的元素,如果它们有,它们应该在页面上,如果不是只打印否。
我已经制作了这段代码,但我不知道为什么它不起作用。
P.S。数组元素包含文本。
$res = count($title1);
for ($j = 0; $j <= $res; $j++) {
if(strtoupper($title2[$j]) == strtoupper($title1[$j]))
{
echo 'Yes<br/>';
echo $title2[$j].'==='.$title1[$j].'<br/';
}
else{
echo 'No<br/>';
}
}
答案 0 :(得分:1)
您也可以使用
<?php
$count = 0
foreach ($array1 as $value) {
if(in_array($value , $array2)
{
echo 'Yes<br/>';
echo $value;
$count = $count + 1 ;
}
}
if($count == 0 )
{
echo "no" ;
}
?>
答案 1 :(得分:0)
我只能猜测,因为我们不知道数组包含什么,但我想你要检查它们是否在任何索引处都有相同的元素。目前,你只是检查$title1
是否与同一索引处的$title2
具有相同的元素。所以如果你有两个数组
['a', 'b'], ['b', 'a']
检查'A' == 'B'
,然后检查'B' == 'A'
。
您需要做的是:
for ($j = 0; $j < count($title1); $j++) {
for ($k = 0; $k < count($title2); $k++) {
if(strtoupper($title2[$k]) == strtoupper($title1[$j]))
{
echo 'Yes<br/>';
echo $title2[$j].'==='.$title1[$j].'<br/>';
}
else {
echo 'No<br/>';
}
}
}
答案 2 :(得分:0)
第一个问题是您使用&lt; = 而不是&lt; 。如果您循环遍历数组计数并且使用&lt; = ,它将遍历数组边界。如果您的数组包含4个元素,则最后一个数组值位于索引3:$arr[3]
(第四个位置),但是您尝试在最后一次迭代时获取$arr[4]
上的值,这将导致错误。你应该检查你的error_log。
试试这个:
$res = count($title1);
for ($j = 0; $j < $res; $j++) {
//you need to check to see if $j'th position is available in $title2 array
if(isset($title2[$j]) && strtoupper($title2[$j]) == strtoupper($title1[$j]))
{
echo 'Yes<br/>';
echo $title2[$j].'==='.$title1[$j].'<br/';
}
else{
echo 'No<br/>';
}
}
或者你可以使用foreach
循环:
foreach($title1 as $key => $value) {
if (isset($title2[$key]) &&
strtoupper($title2[$key]) == strtoupper($title1[$key])) {
echo 'Yes<br/>';
echo $title2[$key].'==='.$title1[$key].'<br/';
}
else {
echo 'No<br/>';
}
}
答案 3 :(得分:0)
foreach ($array1 as $value) {
if(in_array($value , $array2)
{
echo 'Yes<br/>';
echo $value;
$count = $count + 1 ;
}
}
这是正确答案:) thnx @hamidreza