Проблема с неопределенным индексом многомерного массива

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

for ( $k = 0; $k < count( $iva_all_dpt_info[ $weekdays[ $j ] ] ); $k++ ) {
    if ( in_array( $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['starttime'], $hours ) ) {

    $iva_departments[$iva_all_dpt_info[$weekdays[$j]][$k]['title']]['doctors_id'][] = isset($iva_all_dpt_info[ $weekdays[$j]][$k]['doctor_id'])?$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors_id'][] = $iva_all_dpt_info[ $weekdays[$j]][$k]['doctor_id']:$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors_id'][] = '';

    $iva_departments[$iva_all_dpt_info[$weekdays[$j]][$k]['title']]['doctors'][] = isset($iva_all_dpt_info[ $weekdays[$j]][$k]['doctors'])?$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors'][] = $iva_all_dpt_info[ $weekdays[$j]][$k]['doctors']:$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors'][] = '';

    $iva_departments[$iva_all_dpt_info[$weekdays[$j]][$k]['title']]['department'][] = isset($iva_all_dpt_info[ $weekdays[$j]][$k]['department'])?$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['department'][] = $iva_all_dpt_info[ $weekdays[$j]][$k]['department']:$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['department'][] = '';

    $iva_departments[$iva_all_dpt_info[$weekdays[$j]][$k]['title']]['specialty'][] = isset($iva_all_dpt_info[ $weekdays[$j]][$k]['specialty'])?$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['specialty'][] = $iva_all_dpt_info[ $weekdays[$j]][$k]['specialty']:$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['specialty'][] = '';

        // if timeformat is 12 hours
        if ( $iva_timeformat == 12 ) {
            $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['hours'][] = date( 'h.i a', strtotime( $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['starttime'] ) ) . ' - ' . date( 'h.i a', strtotime( $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['endtime'] ) );
        } else {
            $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['hours'][]      = $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['starttime'] . ' - ' . $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['endtime'];
        }

    }
}

Не уверен, как использовать isset для индекса title. Как я могу использовать isset в нем.

if (isset($iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ])) ?
Cid 09.04.2019 15:36
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте этот код:

for ( $k = 0; $k < count( $iva_all_dpt_info[ $weekdays[ $j ] ] ); $k++ ) {
  if ( in_array( $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['starttime'], $hours ) ) {
    if (isset($iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ])){
       $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors_id'][] = $iva_all_dpt_info[ $weekdays[$j]][$k]['doctor_id'];
       $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors'][] = $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['doctor'];
       $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['department'][] = $iva_all_dpt_info[ $weekdays[ $j ]][$k]['department'];
       $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['specialty'][] = $iva_all_dpt_info[ $weekdays[ $j ]][$k]['specialty'];

      // if timeformat is 12 hours
      if ( $iva_timeformat == 12 ) {
           $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['hours'][] = date( 'h.i a', strtotime( $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['starttime'] ) ) . ' - ' . date( 'h.i a', strtotime( $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['endtime'] ) );
      } else {
           $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['hours'][]      = $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['starttime'] . ' - ' . $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['endtime'];
      }
    }
  }
}

Добавьте isset и в эти строки выше. $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors_id'][] = $iva_all_dpt_info[ $weekdays[$j]][$k]['doctor_id'] ;

Ghazal Ehsan 10.04.2019 11:32

@Maqk проверьте код. я отредактировал его. Теперь нет ошибки для заголовка undefined.

Ghazal Ehsan 10.04.2019 11:39

Я приведу пример того, что вы можете сделать: Итак, вы хотите проверить, существуют ли данные, которые вы хотите вставить в каждое из вложенных полей массива title. Что вы можете сделать, так это:

for ( $k = 0; $k < count( $iva_all_dpt_info[ $weekdays[ $j ] ] ); $k++ ) {
    if ( in_array( $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['starttime'], $hours ) ) {

       isset($iva_all_dpt_info[ $weekdays[$j]][$k]['doctor_id'])?$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors_id'][] = $iva_all_dpt_info[ $weekdays[$j]][$k]['doctor_id']:$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors_id'][] = '';

       isset($iva_all_dpt_info[ $weekdays[$j]][$k]['doctors'])?$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors'][] = $iva_all_dpt_info[ $weekdays[$j]][$k]['doctors']:$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['doctors'][] = '';

       isset($iva_all_dpt_info[ $weekdays[$j]][$k]['department'])?$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['department'][] = $iva_all_dpt_info[ $weekdays[$j]][$k]['department']:$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['department'][] = '';

       isset($iva_all_dpt_info[ $weekdays[$j]][$k]['specialty'])?$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['specialty'][] = $iva_all_dpt_info[ $weekdays[$j]][$k]['specialty']:$iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['specialty'][] = '';

        // if timeformat is 12 hours
        if ( $iva_timeformat == 12 ) {
            $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['hours'][] = date( 'h.i a', strtotime( $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['starttime'] ) ) . ' - ' . date( 'h.i a', strtotime( $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['endtime'] ) );
        } else {
            $iva_departments[ $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['title'] ]['hours'][]      = $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['starttime'] . ' - ' . $iva_all_dpt_info[ $weekdays[ $j ] ][ $k ]['endtime'];
        }

    }
}

Таким образом, это проверит, существует ли значение, которое вы пытаетесь присвоить своему полю, и если нет, оно просто поместит пустую строку.

Какая строка выдает ошибку? Можете ли вы вставить это здесь? Также мое решение - всего лишь 1 пример. Вы должны сделать это для каждой строки.

pr1nc3 09.04.2019 16:12

Ты не правильно понял. удалить полностью часть: $iva_departments[$iva_all_dpt_info[$weekdays[$j]][$k]['title‌​']]['doctors_id'][] = И все, что на нее похоже, конечно. Это то, что будет делать троичный элемент, проверьте, установлен ли он, и назначьте значения на основе этого. Это как если-то. Я обновил свой ответ, чтобы он соответствовал коду, который вы обновили.

pr1nc3 10.04.2019 09:01

Другие вопросы по теме