J'essayais de copier ce code:
<?php
foreach ($products as $product) {
$id = $product['id'];
$name = $product['name'];
$description = $product['description'];
$price = $product['price'];
?>
<tr>
<td><img src="<?php echo $product['picture']; ?>" /></td>
<td><b><?php echo $name; ?></b><br />
<?php echo $description; ?><br />
Price:<big style="color:green">
$<?php echo $price; ?></big><br /><br />
<?php
echo form_open('cart/add');
echo form_hidden('id', $id);
echo form_hidden('name', $name);
echo form_hidden('price', $price);
echo form_submit('action', 'Add to Cart');
echo form_close();
?>
</td>
</tr>
<tr><td colspan="2"><hr size="1" /></td>
<?php
}
?>
et voici mon code:
<?php
foreach ($blogs as $blog) {
$id = $blog['id'];
$title = $blog['title'];
$content = $blog['content'];
?>
<h1><?php echo $title; ?></h1>
<h1> <?php echo $content; ?> </h1>
<?php
}
?>
J'obtiens cette erreur chaque fois que j'exécute mon code: "Impossible d'utiliser un objet de type stdClass en tant que tableau"
L'exemple que vous avez copié utilise des données sous la forme d'un tableau contenant des tableaux, vous utilisez des données sous la forme d'un tableau contenant des objets. Les objets et les tableaux ne sont pas identiques et, de ce fait, ils utilisent des syntaxes différentes pour accéder aux données.
Si vous ne connaissez pas les noms de variable, faites un var_dump($blog);
dans la boucle pour les voir.
La méthode la plus simple - accédez directement à $ blog en tant qu'objet:
Essayez (en supposant que ces variables sont correctes):
<?php
foreach ($blogs as $blog) {
$id = $blog->id;
$title = $blog->title;
$content = $blog->content;
?>
<h1> <?php echo $title; ?></h1>
<h1> <?php echo $content; ?> </h1>
<?php } ?>
La méthode alternative - accéder à $ blog en tant que tableau:
Alternativement, vous pourrez peut-être tourner $blog
dans un tableau avec get_object_vars
_ ( documentation ):
<?php
foreach($blogs as &$blog) {
$blog = get_object_vars($blog);
$id = $blog['id'];
$title = $blog['title'];
$content = $blog['content'];
?>
<h1> <?php echo $title; ?></h1>
<h1> <?php echo $content; ?> </h1>
<?php } ?>
Il est à noter que cela ne fonctionnera pas nécessairement avec des objets imbriqués, sa viabilité dépend donc entièrement de la structure de votre $blog
objet.
Meilleur que l'un des précédents - Inline PHP Syntaxe
Ceci dit, si vous voulez utiliser PHP de la manière la plus lisible, aucune des réponses ci-dessus n’est correcte. Lorsque vous utilisez PHP mélangé avec HTML, c’est Considéré comme la meilleure pratique par beaucoup d'utiliser PHP syntaxe alternative , cela réduirait votre code entier de neuf à quatre lignes:
<?php foreach($blogs as $blog): ?>
<h1><?php echo $blog->title; ?></h1>
<p><?php echo $blog->content; ?></p>
<?php endforeach; ?>
J'espère que cela a aidé.
$ blog est un objet et non un tableau
essayez d'utiliser $blog->id
au lieu de $blog['id']
$ blog est un objet, pas un tableau, vous devriez donc y accéder comme ceci:
$blog->id;
$blog->title;
$blog->content;
Il pourrait y avoir deux problèmes
1) $blogs may be a stdObject
ou
2) The properties of the array might be the stdObject
Essayez d'utiliser var_dump ($ blogs) et voyez le problème si les propriétés de array ont stdObject
$blog->id;
$blog->content;
$blog->title;
Si vous parcourez un objet au lieu d'un tableau, vous devez accéder aux propriétés à l'aide de:
$id = $blog->id;
$title = $blog->title;
$content = $blog->content;
Cela, ou changez votre objet en un tableau.
L'objet StdClass est accessible à l'aide de ->
foreach ($blogs as $blog) {
$id = $blog->id;
$title = $blog->title;
$content = $blog->content;
}