J'ai des données JSON qui vont d'une API. J'ai besoin que du nom des produits de là. Comment puis-je obtenir ça? J'essaie déjà avec la boucle foreach mais je ne peux pas. J'utilise Laravel Framework version 6.0
$getSbu = Helper::CreateGuzzleHttpClient('sbu');
foreach ($getSbu as $value) {
if($value->id == 2) {
foreach ($value->categories as $category) {
$products = $category->products;
}
}
}
4 Réponses :
$getSbu = Helper::CreateGuzzleHttpClient('sbu');
foreach (json_decode($getSbu) as $value) {
if($value->id == 2) {
foreach ($value->categories as $category) {
$products = $category->products;
}
}
}
JSON_DECODE () s'attend à ce que le paramètre 1 soit une chaîne, une matrice donnée. Montrer cette erreur.
Basé sur votre question $ GetsBu est un JSON. Votre erreur dit que c'est déjà un tableau
vous voulez obtenir uniquement le nom du produit ??
et si vos données $product_names = [];
foreach ($getSbu as $value) {
if($value->id == 2) {
foreach ($value->categories as $category) {
foreach ($category->products as $product) {
$product_names[] = $product->name;
}
}
}
}
dd($product_names);
Après décodage, vous pouvez simplement utiliser cette assistant
use Illuminate\Support\Arr; Arr::only($array, ['categories.products.name']); or Arr::only($array, ['categories.*.name']);
Cela ne fonctionnera pas, car il y a une matrimonie à l'intérieur.
$ getsbu = assistant :: crééguzzeauhttpclient ('sbu'); $ nom = Arr :: Seul ($ getsbu, ['catégories.products.name']); DD (NOM $); code> Obtenez un tableau vide
Tirer parti des collections LARAVEL
// this is just ur data but as json string
$var = '[{"id":2,"name":"Bijj","categories":[{"id":10,"name":"Rice","sbu":2,"products":[{"id":25,"name":"Rajkumar","skus":[],"short_description":"বাà¦à¦²à¦¾à¦¦à§à¦¶à§à¦° à¦à¦¬à¦¹à¦¾à¦à§à¦¾ à¦à¦ªà¦¯à§à¦à§ হাà¦à¦¬à§à¦°à¦¿à¦¡ ধান"},{"id":50,"name":"Sera","skus":[],"short_description":"বাà¦à¦²à¦¾à¦¦à§à¦¶à§à¦° à¦à¦¬à¦¹à¦¾à¦à§à¦¾ à¦à¦ªà¦¯à§à¦à§ হাà¦à¦¬à§à¦°à¦¿à¦¡ ধান"}]},{"id":20,"name":"Vhutta","sbu":2,"products":[{"id":129,"name":"Pack-139","skus":[],"short_description":"মà§à¦à¦¾à§ ৮৬ % দানা ঠ১৪ % শাà¦à¦¸"},{"id":125,"name":"Don-12","skus":[],"short_description":"সারা বà§à¦¸à¦° à¦à¦¾à¦· à¦à¦ªà¦¯à§à¦à§"}]}]}]';
$objCollection = collect(json_decode($var, true));
$productNames = $objCollection->pluck('categories.*.products.*.name');
dd($productNames);
Cela ne fonctionnera pas à cette question. Parce que les produits code> code> à l'intérieur sont toujours une matrice. Vous devez toujours la boucler.
@Tsaikoga maintenant, cela fonctionne à coup sûr, vous devez simplement ajouter un * pour cela.
Partagez votre code et expliquez ce que vous avez essayé et quels problèmes vous faites face à ce code
Je suis édité mon post.
Ce n'est pas JSON, pas un tableau. Avant
"id" code>, il a toujours besoin d'un"{" code>Désolé, j'ai raté ça. Correction faite.