2
$rows = getChallengeList();
error_log(print_r($rows, 1));
?>
<table border="1">
    <tr><th>ID</th><th>Title</th><th>Description</th></tr>
    <?php foreach ($rows as $row): ?>
        <?php foreach($row as $chal): ?>
        <tr>
            <td><?= $chal['loyalty_challenges_id']; ?></td>
            <td><?= $chal['title']; ?></td>
            <td><?= $chal['description']; ?></td>
        </tr>    
        <?php endforeach; ?>
    <?php endforeach; ?>
</table>

error_logはこれを返します:

[11-Jan-2013 10:44:27] Array
(
    [0] => Array
        (
            [loyalty_challenges_id] => 1
            [title] => New Customer Special
            [description] => Reward new customers with a free order of breadsticks after placing their second order during their first 30 days 
        )

    [1] => Array
        (
            [loyalty_challenges_id] => 2
            [title] => Frequent Flyer Special
            [description] => Reward long-time customers who order often with a free pizza
        )

)

ただし、ループによってレンダリングされる値は次のようになります。

<table border="1">
    <tr><th>ID</th><th>Title</th><th>Description</th></tr>
    <tr>
        <td>1</td>
        <td>1</td>
        <td>1</td>
    </tr>    
    <tr>
        <td>N</td>
        <td>N</td>
        <td>N</td>
    </tr>    
    <tr>
        <td>R</td>
        <td>R</td>
        <td>R</td>
    </tr>    
    <tr>
        <td>2</td>
        <td>2</td>
        <td>2</td>
    </tr>    
    <tr>
        <td>F</td>
        <td>F</td>
        <td>F</td>
    </tr>    
    <tr>
        <td>R</td>
        <td>R</td>
        <td>R</td>
    </tr>    
</table>

何がそれを引き起こすのか考えていますか?独自の配列処理関数を持つCMSではなく、ストレートphpを使用してからしばらく経ちました。

4

4 に答える 4

5

ループが多すぎます:

$rows = getChallengeList();
error_log(print_r($rows, 1));
?>
<table border="1">
    <tr><th>ID</th><th>Title</th><th>Description</th></tr>
    <?php foreach ($rows as $chal): ?>
        <tr>
            <td><?= $chal['loyalty_challenges_id']; ?></td>
            <td><?= $chal['title']; ?></td>
            <td><?= $chal['description']; ?></td>
        </tr>    
    <?php endforeach; ?>
</table>
于 2013-01-11T16:52:25.377 に答える
1

必要なのは1つだけですforeach

<?php foreach ($rows as $row): ?>
    <tr>
        <td><?php echo $row['loyalty_challenges_id']; ?></td>
        <td><?php echo $row['title']; ?></td>
        <td><?php echo $row['description']; ?></td>
    </tr>    
<?php endforeach; ?>

何が起こっていますか ?

ループスルーするときは$chal各キーをループスルーし、アクセスしようとすると $chal['loyalty_challenges_id'];

と同じです

$rows[0]['loyalty_challenges_id']['loyalty_challenges_id']

これはに翻訳されます

$rows[0]['loyalty_challenges_id'][0]

そのため、各行の最初の文字が表示されます。

于 2013-01-11T16:52:58.980 に答える
0

試す :

<?php foreach ($rows as $row): ?>
    <tr>
        <td><?php echo $row['loyalty_challenges_id']; ?></td>
        <td><?php echo $row['title']; ?></td>
        <td><?php echo $row['description']; ?></td>
    </tr>    
<?php endforeach; ?>
于 2013-01-11T16:52:35.867 に答える
0
    <?php foreach($row as $chal): ?>
    <tr>
        <td><?= $chal['loyalty_challenges_id']; ?></td>
        <td><?= $chal['title']; ?></td>
        <td><?= $chal['description']; ?></td>
    </tr>    
    <?php endforeach; ?>

このforeachは不要です。取り外して使用してください$row['loyalty_challenges_id']

于 2013-01-11T16:52:47.047 に答える