如何为echo语句编写循环代码?

时间:2010-03-26 14:39:53

标签: php mysql arrays loops foreach

我在页面底部的foreach echo循环中只得到一个打印结果。

<?php
    defined('_JEXEC') or die('Restricted access');
    $db =& JFactory::getDBO();

    $query0 = "SELECT * FROM  `jos_ginfo` WHERE . . . LIMIT 30";

    //echo $query0;
    $db->setQuery($query0);
    $ginfo = $db->loadObjectList();
    //echo
    //$ginfo[0];
    foreach($ginfo as $ginfo[$i]):
    {$i=0; $i++;} 
     endforeach;
    echo $db->getErrorMsg();

    if(empty($ginfo)){
    echo "<center>No
    game found, try a different entry.</center>";
    }else{


    $pgndata = array ( $ginfo[$i]->Id);

        $i=0;
    foreach($pgndata as $ginfo[$i]->Id):
    //I am only getting one printed result!
    {
        echo "<a href='/index.php?option=com_publishpgn&tactical-game=".$ginfo[$i]->Id."&Itemid=78.html'>\n";
    echo "".$ginfo[$i]->White." v. ".$ginfo[$i]->Black."  (".$ginfo[$i]->Result.") ".$ginfo[$i]->EventDate." ECO:".$ginfo[$i]->ECO."</a><br>\n";

    $i++;
    }

     endforeach;

    //echo "</div>";
        }
    ?>

4 个答案:

答案 0 :(得分:0)

我想,你需要这个:

$ginfo = $db->loadObjectList();
foreach($ginfo as $value)
{
    echo $value . '<br />';
}

此外,请参阅 foreach manual and other loops.

答案 1 :(得分:0)

这是Sarfraz代码的修改版本。

试试这个..

// Array of multiple games
$ginfo = $db->loadObjectList();

// Loop through games array
foreach ($ginfo as $index => $singleGameInfo)
{
    foreach($singleGameInfo as $elementName => $elementValue)
    {
        echo "[$elementName \"$elementValue\"]\n";
    }
}

取代......

echo "[Event \"".$ginfo[0]->Event."\"]\n";

echo "[Site \"".$ginfo[0]->Site."\"]\n";

echo "[Date \"".$ginfo[0]->Date."\"]\n";

echo "[Round \"".$ginfo[0]->Round."\"]\n";

echo "[White \"".$ginfo[0]->White."\"]\n";

echo "[Black \"".$ginfo[0]->Black."\"]\n";

echo "[Result \"".$ginfo[0]->Result."\"]\n";

echo "[ECO \"".$ginfo[0]->ECO."\"]\n";

echo "[WhiteElo \"".$ginfo[0]->WhiteElo."\"]\n";

echo "[BlackElo \"".$ginfo[0]->BlackElo."\"]\n";

echo "[Annotator \"".$ginfo[0]->Annotator."\"]\n";

echo "[SetUp \"".$ginfo[0]->SetUp."\"]\n";

编辑:您是否尝试循环播放多个游戏或单个游戏的现场数据?

Edit2:已更新以循环游戏

答案 2 :(得分:0)

$ query = mysql_query(“select * from table”);

while($ result = mysql_fetch_array($ query)) { echo“$ result [id]”; echo“$ result [firstname]”;

}

答案 3 :(得分:0)

代码中的一些错误:

foreach($ginfo as $ginfo[$i]):
    {$i=0; $i++;} 

在第一次迭代中,$i未定义,因此从$ginfo拉出的第一个foreach循环值将存储在$ginfo[null]中。然后,将$i设置为0,递增它,然后循环,所以现在下一个值存储在$ginfo[1]中,所有进一步的迭代也是如此。因此,您最终只能从$ginfo对象中提取两个值,并存储在“null”和“1”键中。

稍后,你做

$pgndata = array ( $ginfo[$i]->Id);

你没有在循环中执行此操作,因此$pgndata成为一个数组,其中包含一个取自$ginfo[1]->Id的元素。然后你马上做

foreach($pgndata as $ginfo[$i]->Id):

但是$pgndata中只有一个元素,这就解释了为什么你只有一个项目输出。

我不知道你顶部的->loadObjectList()是什么。它返回一个数组吗?一个东西?如果它是任何数组,第一个foreach循环的重点是什么?你正在摧毁除了前两个值之外的所有值。

在foreach循环中循环遍历数组时尝试修改数组永远不是一个好主意。这有点像试图改变你的车上的轮胎和车轴和变速箱,同时沿着高速公路行驶100英里每小时。你可能会幸运一次,剩下的时间你会被涂成薄薄的番茄酱。

另外,为什么要混用{}: / end语法?选择其中一个,但不要同时使用两个。大括号是标准的,普遍理解。 :/ end版本对大多数人来说远不那么受欢迎和不熟悉。