我试图使用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-