foreach循环未定义的索引:title


foreach loop Undefined index: title

我试图使用foreach循环输出一些博客文章的结果,但我一直收到错误"未定义的索引:标题"

<?php foreach ($post as $post_item):?>
<div class="postDiv">
<h4><?php echo $post_item['title'];?></h4>
<p><?php echo $post_item['summary'];?></p>
</div>
<?php endforeach;?>

这是调用var_dump($post)时的数组

array(4) { 
["id"]=> array(5) { 
    [0]=> string(2) "15" 
    [1]=> string(2) "16" 
    [2]=> string(2) "17" 
    [3]=> string(2) "18" 
    [4]=> string(2) "19" } 
["title"]=> array(5) { 
    [0]=> string(3) "234" 
    [1]=> string(2) "11" 
    [2]=> string(1) "2" 
    [3]=> string(3) "444" 
    [4]=> string(5) "title" } 
["summary"]=> array(5) { 
    [0]=> string(3) "213" 
    [1]=> string(2) "11" 
    [2]=> string(1) "2" 
    [3]=> string(3) "444" 
    [4]=> string(7) "summary" } 
["content"]=> array(5) { 
    [0]=> string(3) "234" 
    [1]=> string(1) "1" 
    [2]=> string(1) "2" 
    [3]=> string(3) "444" 
    [4]=> string(7) "content" } }

我是php的一个noob,如果这在这里有区别的话,我也在使用codeigniter(我认为不应该)。如果我使用以下代码,我可以只打印标题的帖子,但这不是我想要的,因为我想在之后添加更多的字段

<?php foreach ($post['title] as $post_item):?>
<div class="postDiv">
<h4><?php echo $post_item;?></h4>
</div>
<?php endforeach;?>

这是我的最后一个代码,适用于我

<?php 
foreach (array_reverse(array_keys($post["id"]), true) as $key):?>
<div class="postDiv">
<h4><?php echo $post['title'][$key];?></h4>
<p><?php echo $post['summary'][$key];?></p>
<p><?php echo $post['content'][$key];?></p>
<div style="float:right">
    <p><?php echo anchor('admin/edit/'.$post['id'][$key],' [edit]');?></p>
    <p><?php echo anchor('admin/delete/'.$post['id'][$key],' [delete]');?></p>
</div>
</div>
<?php endforeach;?>

您的数组在某种程度上与您的设计不一致。

<?php foreach (array_keys($post["id"]) as $key):?>
<div class="postDiv">
    <h4><?php echo $post['title'][$key];?></h4>
    <p><?php echo $post['summary'][$key];?></p>
</div>
<?php endforeach;?>

您的帖子信息似乎是基于数字引用在多个数组键之间拆分的,因此您可以使用该数字键引用来访问包含其余数据的同级数组键。

foreach($post['id'] as $key => $id) {
    $title = $post['title'][$key];
    $summary = $post['summary'][$key];
    $content = $post['content'][$key];
}

仅供您理解:使用foreach($a为$k),您将迭代数组$a,并在每次迭代中放入$k中的一个一级元素。

因此,在第一次迭代中,

$post_item将是

 array(5) { 
    [0]=> string(2) "15" 
    [1]=> string(2) "16" 
    [2]=> string(2) "17" 
    [3]=> string(2) "18" 
    [4]=> string(2) "19" } 

在第二个中,$post_item将为:

array(5) { 
    [0]=> string(3) "234" 
    [1]=> string(2) "11" 
    [2]=> string(1) "2" 
    [3]=> string(3) "444" 
    [4]=> string(5) "title" } 

等等

我甚至不认为这个secodn级别的索引,0,1,2,3,4,5对你有特定的意义,当然,如果你这样做,foreach( array_keys($post["id"]) ...)将与从harcoded 0到count($post)的迭代相同,如果你迭代foreach( $post["id"] as $k),然后使用$k作为其他元素的索引,这将不起作用,因为id的值不是任何其他元素的键。因此,您将得到许多未定义的索引警告。

我也不确定每个元素右边的值是否真的是对你有用的信息。因此,我们可以在这里找到一些技巧来获得您想要的结果,但您需要修复的是在创建$post-

之前的一步