Перебор 3 циклов разной длины — PHP

#php #arrays

#php #массивы

Вопрос:

У меня есть 2 массива, и я хочу создать 3-й массив после сравнения 2 массивов. Код выглядит следующим образом:

 foreach($allrsltntcatg as $alltests)
{
  foreach($alltests as $test)
  {
    foreach($allCatgs as $catg)
    {
      if($catg['testcategoryid'] == $test['testcategory_testcategoryid'])
      {
         $catcounts[$catg['testcategoryname']]  =1;
      }
    }
  }
}
 

Он, хотя и возвращает правильный ответ, также генерирует ошибку PHP с указанием неопределенного индекса и выводит все ошибки, а также правильный ответ.

Я просто хочу избежать ошибки выхода массива из привязки. Пожалуйста, помогите мне

Комментарии:

1. покажите свой массив

2. «У меня есть три двух массивов».

3. Когда массив пытается добавить некоторую арифметическую операцию с неопределенным индексом, например, $catg['testcategoryname'] в $catcounts массиве, тогда генерируется предупреждение. Прежде чем добавлять число, вы должны проверить, присутствует индекс или нет, а затем просто присвоить значение, иначе добавьте в него.

4. На самом деле есть два массива.

5. просто используйте ISSET, чтобы проверить, является ли значение isset или нет

Ответ №1:

Проблема в том, что условие if правильное, как показано ниже: сначала вам нужно инициализировать массив, а затем вы можете увеличить значение

 if($catg['testcategoryid'] == $test['testcategory_testcategoryid'])
{
    if (isset($catcounts[$catg['testcategoryname']]))
         $catcounts[$catg['testcategoryname']]  =1;
    else
         $catcounts[$catg['testcategoryname']] =1;
}
 

Комментарии:

1. Добро пожаловать. Пожалуйста, примите этот ответ как правильный 🙂

Ответ №2:

Когда массив пытается добавить некоторую арифметическую операцию с неопределенным индексом, например, $catg['testcategoryname'] в $catcounts массиве, тогда генерируется предупреждение. Прежде чем добавлять число, вы должны проверить, присутствует индекс или нет, а затем просто присвоить значение, иначе добавьте в него.

Так что делайте это таким образом, только если условие-

 if(....){
    if(array_key_exists($catg['testcategoryname'], $catcounts))
        $catcounts[$catg['testcategoryname']]  =1; // Add into it
    else
        $catcounts[$catg['testcategoryname']] = 1; // Assign only

}
 

Подробнее о существовании ключа массива — Смотрите больше

Ответ №3:

$catg['testcategoryname'] должен представлять индекс в $catcounts массиве.