Как сравнить два массива, используя цикл for?

1

У меня есть 2 взрывающихся массива из базы данных. и это то, что я сделал.

    $searches = explode(',', $searchengine);
    $icons = explode(',', $icon);
    $b = count($searches);
    $c = count($icons);

Я также создал массив для сравнения каждого массива взрыва.

$searchesa = array("google","yahoo","bing");
    $d = count($searchesa);
    $iconsa = array("facebook","twitter","googleplus","linkedin","pinterest","delicious","stumbleupon","diigo");
    $y = count($iconsa);

Затем я использовал для циклов для перемещения к различным индексам массива. Но результат неправильный, и иногда у меня есть ошибка, которая говорит НЕ УКАЗАННЫЙ СМЕЩЕНИЕ.

for ($a=0; $a <$d ; $a++) {
    if ($searches[$a] == $searchesa[$a]) 
            {echo '<br>'.$searchesa[$a].': check ';
        }else
        echo '<br>'.$searchesa[$a].': chok ';
    }

for ($x=0; $x <$y ; $x++) {
    if ($icons[$x] == $iconsa[$x]) 
        echo '<br>'.$iconsa[$x].': check ';
    else
        echo '<br>'.$iconsa[$x].': chok ';
}

Если индекс из базы данных и массив, который я сделал, совпадают, он будет проверять чек, иначе он будет указывать chok.

  • 0
    Неопределенное смещение? Тогда, вероятно, оба массива не имеют одинаковую длину. с:
  • 0
    проверь мое решение
Показать ещё 5 комментариев
Теги:
arrays
for-loop

4 ответа

1
Лучший ответ

Я разместил это в своем комментарии, но я полагаю, что в ответ ответ будет работать лучше.

Надеюсь, это может помочь:

<?php
$array_a = ['test','test2']; // assume this is your first array
$array_b = ['test']; // assume this is the array you wan to compare against
$found = false;

foreach ($array_a as $key_a => $val_a) {
    $found = false;
    foreach ($array_b as $key_b => $val_b) {
       if ($val_a == $val_b) {
            echo '<br>'. $val_b .': check ';     
            $found = true;
        }     
    }
    if (!$found)
        echo '<br>'. $val_a .': chok ';
}
?>

EDIT: Пожалуйста, извините меня за то, что не тестировал его.

Эта вещь будет проходить через первый массив и сравнить ее с каждым значением в другом массиве.

Совет. Вы можете легко поместить это в функцию и называть его как compare($arr1, $arr2)

  • 0
    это сработало! большое спасибо :)
  • 0
    Добро пожаловать ^^ Я видел, как Токер Шафи также опубликовал хороший ответ, возможно, вы могли бы объединить эти два предложения. или просто придерживаться одного: p
2
$arraysAreEqual = ($a == $b); // TRUE if $a and $b have the same key/value pairs. 
$arraysAreEqual = ($a === $b); // TRUE if $a and $b have the same key/value pairs in the same order and of the same types.

взято через: PHP - проверьте, равны ли два массива

  • 0
    Это хорошее предложение, но не было ли смысла сравнивать каждое значение отдельно?
  • 0
    @Xyv делает то же самое .. зачем сравнивать с помощью итерации? Я согласен, сравнение полезно, если мы должны выполнить какую-то бизнес-логику на основе соответствия.
Показать ещё 2 комментария
1

Вы можете попробовать метод in_array:

$searchesa = array("google","yahoo","bing");
$iconsa = array("facebook","twitter","googleplus","linkedin","pinterest","delicious","stumbleupon","diigo",'google');

foreach($searchesa as $val){
    if(in_array($val, $iconsa)){
       echo "check";
    } else {
       echo "choke";
    }
}

Примечание. Я добавил "google" в массив $iconsa.

0

Если я правильно вас понимаю, это то, что вы ищете:

// Lets prepare the arrays
$searchEngines = explode(',', $searchengine);
$icons = explode(',', $icon);

// Now let define the arrays to match with
$searchEnginesCompare = array(
    'google',
    'yahoo',
    'bing'
);

$iconsCompare = array(
    'facebook',
    'twitter',
    'googleplus',
    'linkedin',
    'pinterest',
    'delicious',
    'stumbleupon',
    'diigo'
);

// Check the search engines
foreach ($searchEngines as $k => $searchEngine) {
    if (in_array($searchEngine, $searchEnginesCompare)) {
        echo $searchEngine." : check<br />";
    } else {
        echo $searchEngine." : failed<br />";
    }
}

// Now let check the icons array
foreach ($icons as $k => $icon) {
    if (in_array($icon, $iconsCompare)) {
        echo $icon." : check<br />";
    } else {
        echo $icon." : failed<br />";
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню