Невозможно получить приращение счетчика, если два массива имеют одинаковые элементы в PHP

0

У меня есть два массива, и я пытаюсь получить счетчик для кандидатов, которые появляются в обоих массивах для каждого event_id. Это то, что я пробовал.

$temp = array();

foreach ( $events as $event)
{
    foreach ( $users as $user )
    {
        if ( $event['event_id'] ==  $user['event_id'] )
        {
            $temp [$event['event_id']] = 0;

            if ( $event['user_id'] ==  $user['user_id'] )
            {
                $temp [$event['event_id']]++;
            }
        }
    }
}

Это то, что я получаю. Все равно 0, хотя есть пользователи, которые появляются на обоих массивах для одного и того же event_id.

array (size=15)
  384 => int 0
  395 => int 0
  392 => int 0
  404 => int 0
  406 => int 0
  313 => int 0
  315 => int 0
  322 => int 0
  326 => int 0
  327 => int 0
  334 => int 0
  717 => int 0
  344 => int 0
  378 => int 0
  403 => int 0
  • 0
    Попробуйте переместить $temp [$event['event_id']] = 0; сразу после начала первого цикла
Теги:
arrays

1 ответ

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

Вы возвращаете $temp [$event['event_id']] на 0 на каждой итерации, в которой event_id соответствует в обоих массивах.

Вам нужно установить $temp [$event['event_id']] на 0 только один раз. Например:

$temp = array();

foreach ( $events as $event)
{
    $temp [$event['event_id']] = 0;
    foreach ( $users as $user )
    {
        if ( $event['event_id'] ==  $user['event_id'] && $event['user_id'] ==  $user['user_id'] )
        { 
            $temp [$event['event_id']]++;
        }
    }
}
  • 0
    Спасибо! Вроде работает.

Ещё вопросы

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