2016-08-13 120 views
0

控制器:遍历JSON阵列中PHP laravel

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class welcomeController extends Controller 
{ 
    public function welcome() { 
     $cards = json_decode('[{ 
      "id": 1, 
      "name ": "a", 
      "class": "class1" 
     }, { 
      "id": 2, 
      "name ": "b", 
      "class": "class2" 
     }]'); 

     return view('welcome', compact('cards')); 
    } 
} 

welcome.blade.php上浏览器

@foreach($cards as $card) 
    <p>{{ $card->name }} </p> 
    <p>{{ $card->class }} </p> 
@endforeach 

错误消息 enter image description here

我PHP larav新增功能埃尔。请帮我找到适当的解决办法。谢谢。

回答

1

你好,你在你的代码,一切就OK了问题是在JSON变量 $卡= json_decode('[{ “ID”:1, “名 “: ”一“, ”类“:” class1“ },{ ”id“:2, ”name“:”b“, ”class“:”class2“ }]');

键“名”有一定的空间内使鉴于你特林访问为“名”,这就是为什么错误来了

+0

伟大的观察,非常感谢。这工作。 – Kartik

0

从您的屏幕截图中,发送到模板的'cards'值是一个数组的数组,而不是您的代码段生成的一组对象。

json_decode()的第二个参数是是否转换为关联数组,默认为不是。

+0

我也曾尝试TRUE;作为第二个参数'json_decode()' 。但是,我不希望如此。 – Kartik

+0

从外观看,截图是当你传入true时,代码没有。从我所知道的情况来看,代码应该像描述中给出的一样工作! – jedifans

1

尝试

return view('welcome')->with("cards",$cards); 
+0

虽然此代码片段可能会解决问题,但[包括解释](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要使用解释性注释来挤占代码,因为这会降低代码和解释的可读性! – FrankerZ

+0

乐施会我会remmeber,并感谢您的意见@FrankerZ –

0

的错误发生,因为您的JSON数组是多维的,和你的welcome.blade.php呼吁名称和类的不以阵列的那个水平存在变数。

在你welcome.blade.php,改变你的foreach说:

@foreach($cards[0] as $card) 
    <p>{{ $card->name }} </p> 
    <p>{{ $card->class }} </p> 
@endforeach 

我认为,应该让你回到正轨。希望有所帮助!

+0

当我使用 '@foreach($卡作为$卡)

{{$卡 - > ID}}

@ endforeach' 它给了我下面上述结果: '1 2' 所以这意味着它循环两次,但没有得到值。 – Kartik