Nasıl yankı deyimi için bir döngü kod?

4 Cevap php

I get only one printed result in the foreach echo loop at the bottom of the page.

<?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 Cevap

Kodunuzu birkaç hatalar:

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

Birinci denemede, $i tanımlanmamış olan, bu yüzden foreach döngü için $ginfo çekilmiş ilk değer $ginfo[null] saklanacaktır. Sen, daha sonra $i 0'a ayarlandığında, onu artırmak, ve çevresinde döngü, şimdi bir sonraki değeri $ginfo[1] saklanan alır diğer tüm tekrarlamalar olacak gibi. Yani $ginfo nesneye çıkarılır sadece iki değerleri ile sonuna kadar ve 'boş' ve '1 'anahtarlarında depolanır.

Daha sonra, bunu

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

Eğer bir döngü içinde bu yapıyorum, yani $pgndata $ginfo[1]->Id alınan tek bir elemanı ile bir dizi haline değiliz. Daha sonra hemen yapmak

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

ama $pgndata sadece bir öğe çıkışı var açıklıyor ki, bunun sadece bir tek unsur vardır.

Ben senin ->loadObjectList() üstünde ne olduğunu bilmiyorum. Bir dizi mi dönüyor? Bir nesne? Herhangi bir dizi varsa, ilk foreach döngü ne anlamı var? Bunu mevcut ilk iki değerleri ancak tüm bozuyorsun.

Bu bir foreach döngüsü üzerinde döngü konum İKEN bir dizi denemek ve değiştirmek için hiç iyi bir fikir asla. Bu tür 100mph otoyolda giderken arabanızda bir lastik ve aks ve şanzıman değiştirmek için çalışıyor gibi. Sen, bir kez ince bir ketçap lekesi içine yaymak için gidiyoruz zaman dinlenme şanslı olabilir.

Ayrıca, neden {} ve : / end sözdizimi karıştırma? Birini ya da diğerini seçmek, ancak her ikisi de kullanmayın. Parantez standart ve evrensel olarak anlaşılır. :/ son sürümü çok daha az popüler ve yabancı pek çok insan için olduğunu.

Sanırım, bu ihtiyacı:

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

Ayrıca, bkz foreach manual and other loops.

$ Sorgu = mysql_query ("table SELECT * from");

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

}

Bu Sarfraz kodunun değiştirilmiş bir versiyonu.

Bu deneyin ..

// 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";
    }
}

Yerine ...

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";

Edit: Eğer tek bir oyunun çoklu oyunlar veya alan verilere döngü çalışıyorsunuz?

Edit2: oyun yoluyla döngü Güncelleme