我一直在单独的foreach中使用爆炸,但现在我想在现有的foreach中使用它,我觉得很难。而不是屏幕截图的名称,它回声“数组”。我做错了什么,我怎么能将它限制在一个截图中,而不是最多四个?
<?php $game = Yii::app()->db->createCommand();
$game->select = 'idProgramGame, dk_name, dk_text, picture, recordType, screenshot';
$game->from = 'programsgames';
$game->where = 'dk_name IS NOT NULL';
$game->where = 'featured = 2';
$game->where = 'points = 100';
$game->where = 'recordType = "g"';
$game->order = 'date DESC';
$game->limit = '1';
$gameresult = $game->query();
foreach($gameresult as $gamerow) {
echo '<a href="http://www.domain.com/Yii/index.php/programsgames/';
echo $gamerow['idProgramGame'];
echo '">';
echo '<br><div class="image"><h2><span><b>';
echo $gamerow['dk_name'];
echo '</b></span></h2>';
echo '<center><img src="http://www.domain.com/upload/';
echo explode(';',$gamerow['screenshot']);
echo '" height="250" align="center" alt="';
echo $gamerow['dk_name'];
echo '"></center>';
echo '</a></div><br><br><br>';
}
?>
答案 0 :(得分:1)
在尝试调试时,您应该尽可能地简化代码,同时仍然会收到错误。
在这种情况下,您已经确定此echo explode(";",$gamerow['screenshot']);
行有问题,因此您应该调查explode
及其工作原理。
特别是,您会注意到它返回一个数组。读取数组将告诉您,如果您尝试回显它,它会输出Array
,字面意思。
现在,我不知道$gamerow['screenshot']
中有什么,但我猜它会是这样的:
something.png;otherstuffhere
如果是这种情况,那么您的解决方案取决于您的PHP是否是最新的。
如果是,请执行以下操作:
echo explode(";",$gamerow['screenshot'])[0];
如果没有,则必须使用临时变量:
$parts = explode(";",$gamerow['screenshot']);
echo $parts[0];
为了将来参考,要输出数组的内容以进行调试,请使用var_dump
或相关函数。
答案 1 :(得分:0)
echo explode(';',$gamerow['screenshot']);
explode()将返回由';'分隔的所有值的数组,但echo()不能显示数组。您可以使用foreach:
从explode()循环遍历该数组foreach(explode(';',$gamerow['screenshot']) as $screenshot){
echo($screenshot);
}