尝试访问存在的数组中的键时,PHP未定义索引

时间:2019-05-15 23:08:52

标签: php codeigniter

我的数据库中的表中有许多行(成分),我正在使用以下代码来迭代并使用每个名称填充视图,但是我希望能够显示子代/父代(数据库中的列),我能够正确注销这些值,但是当我尝试如下所示进行回显时,我会收到“消息:未定义索引:父母”和“消息:未定义索引:孩子”;

<?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 } ?>

我很困惑,因为我没有问题将其注销。 我以为这可能是由于空值所致,所以我为子级/父级分配了以下每一行一个字符串值;

enter image description here

但错误仍然存​​在。

这是浏览器中记录的输出;

enter image description here

<?php ChromePhp::log($key); ?>的输出

enter image description here

编辑:这是我构建$ ingredients数组的方式;

<?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 :(得分:0)

我的数组有两组数据,我通过将数组限制为一组来解决了这个问题。

答案 1 :(得分:0)

<?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>

答案 2 :(得分:-1)

$ key看起来像一个对象,因此您必须使用->访问它,因此要获得name的值,请使用$ key-> name,$ key-> parents