[英]PHP loop and IF condition
嗨,我有兩個數組,我想檢查它們是否有彼此相同(相同)的元素,如果有,則應該打印在頁面上,而不只是打印No。
我已經編寫了此代碼,但我不知道為什么它不起作用。
PS數組的元素包含文本。
$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/>';
}
}
你也可以用這個
<?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" ;
}
?>
我只能猜測,因為我們不知道數組包含什么,但是我假設您想檢查它們在任何索引處是否具有相同的元素。 目前,您只檢查$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/>';
}
}
}
第一個問題是您使用的是<=而不是< 。 如果循環遍歷數組計數並且使用<= ,它將超出數組范圍。 如果您的數組包含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/>';
}
}
foreach ($array1 as $value) {
if(in_array($value , $array2)
{
echo 'Yes<br/>';
echo $value;
$count = $count + 1 ;
}
}
這是正確的答案:) thnx @hamidreza
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.