Неопределенный индекс PHP при попытке доступа к ключу в массиве, который существует - PullRequest
0 голосов
/ 16 мая 2019

У меня есть ряд строк (ингредиентов) в таблице в моей базе данных, я использую следующий код для итерации и заполнения своего представления по имени каждого, но я хочу иметь возможность отображать детей / родителей (столбцы в БД) каждого элемента, я могу правильно вывести значения, но когда я пытаюсь повторить, как показано ниже, я получаю «Сообщение: Неопределенный индекс: родители» & «Сообщение: Неопределенный индекс: дети»;

<?php foreach ($ingredient as $row => $key) { ?>
    <tr>
        <td><?php echo $row + 1; ?> </td>
        <td><?php echo $key['name']; ?> </td>
        <?php ChromePhp::log($key['parents']); ?>
        <td><?php echo $key['parents']; ?> </td>
        <?php ChromePhp::log($key['children']); ?>
        <td><?php echo $key['children']; ?> </td>
        <td>
    </tr>
<?php } ?>

Я в замешательстве, так как у меня нет проблем с выходом из системы. Я предположил, что это может быть связано с нулевыми значениями, поэтому я назначил child / parent строковое значение для каждой строки следующим образом:

enter image description here

но ошибка сохраняется.

Вот записанный вывод в браузере;

enter image description here

Выход <?php ChromePhp::log($key); ?>

enter image description here

РЕДАКТИРОВАТЬ: Вот как я строю массив $ ингридиентов;

<?php

    function get_ingredient()
    {
        $qry = "SELECT CONCAT(UPPER(LEFT(i.name, 1)), LCASE(SUBSTRING(`name`, 2))) as name,i.id as id,'ingredient' as type, i.parents as parents, i.children as children FROM `ingredient` i WHERE i.is_del=0 order by i.name asc";
        $qry = $this->db->query($qry);

        if ($qry->num_rows() > 0) {
            $ingr = $qry->result_array();
        } else {
            $ingr = array();
        }
    }
    ?>

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

Ответы [ 3 ]

0 голосов
/ 16 мая 2019

В моем массиве было два набора данных, я решил это, ограничив массив одним набором.

0 голосов
/ 16 мая 2019
<?php foreach ($ingredient as $row => $key) { ?>
<tr>
    <td><?php echo $row + 1; ?> </td>

    <?php if(isset($key['name']) && !empty($key['name'])):?>
    <td><?php echo $key['name']; ?> </td>
    <?php endif;?>

    <?php if(isset($key['parents']) && !empty($key['parents'])):?>
        <?php ChromePhp::log($key['parents']); ?>
        <td><?php echo $key['parents']; ?> </td>
    <?php endif;?>

    <?php if(isset($key['children']) && !empty($key['children'])):?>
        <?php ChromePhp::log($key['children']); ?>
        <td><?php echo $key['children']; ?> </td>
    <?php endif;?>
</tr>
0 голосов
/ 16 мая 2019

$ key выглядит как объект, поэтому вы должны получить к нему доступ ->, чтобы получить значение имени, используйте $ key-> name, $ key-> parent

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