foreach循环未定义的索引:标题

时间:2013-12-10 21:49:04

标签: php codeigniter

我正在尝试使用foreach循环输出一些博客文章的结果,但我不断收到错误“Undefined index:title”

<?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的菜鸟,我也使用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;?>

3 个答案:

答案 0 :(得分:1)

看起来您的帖子信息是基于数字引用分割成多个数组键的,因此您可以使用该数字键引用来访问包含其余数据的兄弟数组键。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

只为了解你: 使用foreach($ a as $ 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