我正在尝试使用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;?>
答案 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
时