在另一个foreach中使用爆炸

时间:2013-11-23 22:40:25

标签: php foreach limit explode

我一直在单独的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>';


            }

?>

2 个答案:

答案 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);
}