2010-11-05 9 views
0

Je voudrais entourer ce bloc entier de code dans un try/catch car cela provoque une erreur quand il n'y a rien dans le tableau de la grille. Quel est le meilleur moyen de le faire?Puis-je utiliser PHP try/catch autour d'un gros bloc de HTML?

<?php foreach ($grid->result() as $idx => $row): ?> <?php if ($idx % 3 == 2): ?> 
    <div class="img_grid_3"><img src="/images/thumb/<?= $row->images_name; ?>" /></div> 
    <?php else: ?> 
    <div class="img_grid"><img src="/images/thumb/<?= $row->images_name; ?>" /></div> 
    <?php endif; ?> 
<?php endforeach; ?> 

Merci

Répondre

1

Peut-être Im manque le point, mais pourquoi ne pas vous tester $ grille avant de faire le foreach?

<?php if($grid): ?> 
    .... foreach .... 
<?php endif; ?> 
+0

Im en utilisant le framework codeigniter. La grille sera toujours un tableau mais elle peut ne pas être remplie. – Kory

+1

'if ($ grid-> result())' peut-être? – MrMisterMan

+0

@MrMisterMan, merci, cela fonctionne aussi. – Kory

0

Si je vous ai bien, vous êtes à la recherche de l'opérateur de suppression d'erreur @. Si vous passez un tableau vide à foreach, vous obtiendrez un avertissement PHP, vous ne pouvez pas l'attraper avec un bloc try/catch.

<?php @foreach ($grid->result() as $idx => $row): ?> 
    <?php if ($idx % 3 == 2): ?> 
    <div class="img_grid_3"><img src="/images/thumb/<?= $row->images_name; ?>" /></div> 
    <?php else: ?> 
    <div class="img_grid"><img src="/images/thumb/<?= $row->images_name; ?>" /></div> 
    <?php endif; ?> 
<?php endforeach; ?> 

Il est possible d'utiliser un bloc catch try avec le contenu html aussi, mais il va attraper évidemment que Exceptions.

Notez qu'il est plus propre de vérifier si la matrice est vide ou non avant de l'utiliser dans un bloc foreach.

0

foreach ne produira pas d'erreur si le tableau est vide.

Donc, soit $grid est pas un objet, ou result() renvoie une non-tableau comme false ou null. Si le premier, entourer le foreach avec if ($grid), de ce dernier, que d'utiliser if (!empty($grid->result()))