Pourquoi mon tableau PHP donnez-moi “Ne peut pas utiliser d'objet de type stdClass comme matrice”?
Quelqu'un peut-il peut aider ici, je suis en utilisant un tableau pour obtenir certaines données partagée et sur la vue c'est attaché, j'obtiens cette erreur ci-dessus.
voici mon code:
PHP ajax pour afficher:
$images = array();
$data_link = array();
$data_id = array();
$data_likes = array();
$data_text = array();
foreach ($media as $data) {
//dd($data->caption);
$images[] = array(
//dd($data->caption),
"data_url"=>$data->images->standard_resolution->url,
"data_link"=>$data->link,
"data_text" => $data->caption['text'],
"data_id"=>$data->getId(),
"data_likes"=>$data->likes->count,
"data_like"=>$current_user->likes($data),
"data_token"=>$token
);
}
echo json_encode(array(
'next_id' => $media->getNextMaxTagId(),
'images' => $images
));
J'ai ensuite accéder aux données avec une charge plus de bouton. Quand je déboguer le code pour $data->caption
j'obtiens ceci:
object(stdClass)#62 (4) {
["created_time"]=>
string(10) "1377775401"
["text"]=>
string(48) "New arrival #folkclothing reversible knit/jacket"
["from"]=>
object(stdClass)#63 (4) {
["username"]=>
string(18) "vanmildertclothing"
["profile_picture"]=>
string(76) "http://images.ak.instagram.com/profiles/profile_24567722_75sq_1342623790.jpg"
["id"]=>
string(8) "24567722"
["full_name"]=>
string(11) "Van Mildert"
}
["id"]=>
string(18) "533141169038331174"
}
Personne ne sait pourquoi j'ai cette erreur?
Édité ci-dessous ici que l'erreur n'est pas comme prévu
L'ajax jquery appel pour ce est comme ci-dessous:
$('#more').click(function() {
var tag = $(this).data('tag'),
maxid = $(this).data('maxid');
$.ajax({
type: 'GET',
url: '/ajax',
data: {
tag: tag,
max_tag_id: maxid
},
dataType: 'json',
cache: false,
complete: function(){
},
success: function(data) {
//Output data
$.each(data.images, function(i, src) {
var $content = $('<article class="instagram-image"><form id="'+ data.images[i].data_token +'" class="forms status-'+ data.images[i].data_like +'" action="'+base+'" method="post"><a class="fancybox" href="' + data.images[i].data_url + '"><img alt="' + data.images[i].data_text + '" src="' + data.images[i].data_url + '" alt="' + data.images[i].data_text + '" /></a><div class="formSubmit-feedback"></div><input type="hidden" name="id" value="'+ data.images[i].data_id +'"><p>'+ data.images[i].data_likes +'</p></form></article>');
var duration = 1000, n = 0.1;
$content.appendTo('section#images');
$item = $content.find('form');
if( $item.hasClass("status-false") ){
$item.addClass("notLiked");
//$('.notLiked').find('button.unlike').hide();
$item.find('a').after('<button class="ajax instabtn button-like like icon-heart" type="submit" name="action" value="Like"></button>');
}
if( $item.hasClass("status-true") ){
$item.addClass("Liked");
//$('.Liked').find('button.like').hide();
$item.find('a').after('<button class="ajax instabtn button-unlike unlike icon-heart" type="submit" name="action" value="Unlike"></button>');
}
});
//Store new maxid
$('#more').data('maxid', data.next_id);
},
error:function(){
$('#error-panel').html('<p class="error"><strong>Oops!</strong> Try that again in a few moments.</p>');
}
});
});
Sur la page j'ai un bouton qui charge plus instagram des images dans le conteneur, il fonctionne bien avec tout le reste mais pas avec la légende->texte sur lequel j'essaie d'accès. Si je vais à l'url /ajax-je obtenir les données que je veux et il affiche le texte dans la text_data tableau, mais quand il s'agit de chargement que dans les images de la charge de plus je reçois cette erreur.
C'est exactement l'erreur que j'obtiens:
Error rendering view: [instagram.ajax]Trying to get property of non-object
Pas aussi simple que je le pensais.
caption
n'est pas un tableau, votre dump vous dit qu'il est un objet de stdClass
et qu'il a bien appelé text
. Ce n'est pas $data->caption['text']
, c'est $data->caption->text
. Fondamentalement, vous avez eu à lire l'erreur et de le comprendre. Vous avez essayé d'utiliser l'objet comme un tableau. Erreur indique que vous ne pouvez pas utiliser l'objet comme un tableau. Vous ignoré, et alla se poser la question, donc je vais downvote vous faute d'avoir essayé, c'est vraiment une banale erreur de base et des notions de basewow, ok! Merci pour votre droit de l'honnêteté. La question n'est pas aussi droite que ça, parce que avec ce que j'obtiens cette erreur:
Trying to get property of non-object
. Je suis accédant à l'url par le biais d'un appel ajax et quand j'ai inspecter l'onglet réseau pour l'appel que je reçois une erreur et par le biais de l'enquête, il jette l'erreur.Eh bien, maintenant vous êtes arrivé à un autre problème et devrait probablement inclure tout ce que vous essayez de faire, de sorte que nous pouvons réellement aider à vous au lieu de critiquer 🙂 l'erreur que vous avez initialement obtenu était à cause de vous bande de roulement de l'objet en tant que tableau. Maintenant, vous avez mentionné quelque chose d'autre. L'esprit, y compris tous vos étapes, de sorte que nous pouvons aussi voir ce qu'il se passe et où ça se passe mal?
Bon de garder un œil sur la nouvelle version éditée cheers 🙂
OriginalL'auteur M dunbavan | 2013-08-30
Vous devez vous connecter pour publier un commentaire.
Exactement comme il est dit:
$data->caption
est un objet, mais vous essayez d'accéder à un tableau à l'aide de$data->caption['text']
. L'accès comme un objet à la place:Trying to get property of non-object
parce que je suis en utilisant un appel ajax pour accéder aux données en un clic pour charger plus de bouton, celui-ci utilise l' /url ajax avec"data_text" => $data->caption->text
.Eh bien, maintenant vous essayez d'accéder à quelque chose comme un objet qui n'est pas un objet. Même chose dans le sens inverse.
hmm, ce que la solution serait-ce?
La solution est: ne faites pas ça. 😛 je veux dire, ce n'est certainement pas le même élément de données qu'elle a été se plaindre à propos de la première fois. Soit c'est complètement un autre cas où cela se produit, ou si vous avez des données qui sont parfois un objet et parfois, peut-être rien. Ensuite, vous devez vous assurer que vos données ne sont pas mixtes ou vous vérifiez d'abord si quelque chose existe ou pas avant d'essayer d'y accéder.
OriginalL'auteur deceze
$data->caption
est un objet, mais votre code tente d'y accéder comme s'il s'agissait d'un tableau.Changement
$data->caption['text']
à$data->caption->text
Upvoted, semble comme si quelqu'un était sur downvote spree pour aucune raison.
Ce n'était pas moi!!
OriginalL'auteur webbiedave
$data->caption
est un objet, et vous y accédez en tant que tableau.Utilisation
$data->caption->text
à la place.J'ai aussi eu downvoted pour aucune raison. +1. Votre réponse est correcte.
OriginalL'auteur Bart Friederichs
Droit, la réponse était:
J'ai donc déclaré la variable avant que les images de tableau et ensuite accessibles dans le tableau.
OriginalL'auteur M dunbavan