我用过这个,但我的数组显示为空白。
foreach($page_data->result() as $text){ $i++;
echo $name="text".$i; //this line print ok.
$$name=array();
echo $$name['content']=$text->$content; //this line print ok.
print_r($text1);
} print_r($text1);
这里我想将数组动态命名为text1,text2,text3 ....... 但是当我打印$ text1时,它会显示一个空白数组。
任何人都可以帮助我。
答案 0 :(得分:1)
这只是语法模糊。 $$name['content']
被理解为:
${$name['content']}
即。变量的名称应该是$name['content']
的值,显然不存在,如果启用错误报告,实际上会导致错误。您可以通过以下方式解决此问题:
${$name}['content'] = $text->$content;
但是,你真的应该通过使用数组而不是变量来解决这个问题:
$texts[] = array('content' => $text->$content);
答案 1 :(得分:-1)
在回显变量内容之前,你需要递增索引,所以如果只有1个结果,它会尝试访问未定义的索引,每次通过时你也会重新初始化名称数组循环,你不应该这样做
Results
------------------
Num Content
0 I am a text post
如果这些是返回的结果并且你想指向索引i
,那么当你的循环经历时会发生这种情况:
i = 0;
i = 1;
assign values to name array
因为只有一个结果会发生
Results
------------------
Num Content
0 I am a text post
- - <----- i = 1 (null pointer exception?)
这就是为什么数组中没有显示任何值的原因,请尝试将代码更改为:
// Declare i to point at the 0 index
$i = 0;
$name=array();
foreach($page_data->result() as $text){
$name[i]['content']=$text;
$i++;
}
每次循环传递时,您的名称数组都不会将文本内容添加到新索引中,即如果您有2个结果
$name[0]['content'] = "This is a text post";
$name[1]['content'] = "Here is another post";
希望这有帮助。