【发布时间】:2016-05-13 03:31:09
【问题描述】:
我有一个数组
dd($vcpe)
array:23 [▼
"cpe_mac" => "436291229311"
"bandwidth_max_up" => 0
"bandwidth_max_down" => 0
"filter_icmp_inbound" => false
"dmz_enabled" => false
"dmz_host" => "192.168.1.1"
"vlan_id" => 2
"dns" => array:1 [▼
0 => ""
]
"xdns_mode" => 0
"cfprofileid" => 11111
"stub_response" => "0"
"acl_mode" => 0
"portal_url" => ""
"fullbandwidth_max_up" => 1000000
"fullbandwidth_max_down" => 2000000
"fullbandwidth_guaranty_up" => 300000
"fullbandwidth_guaranty_down" => 400000
"account_id" => 1001
"location_id" => 3333
"network_count" => 3
"group_name" => "test_group"
"vse_id" => 20
"firewall_enabled" => false
]
我想遍历它,并打印出键和值。
尝试#1
@foreach ($vcpe as $key => $value)
<p>{{$key}} : {{$value}}</p>
@endforeach
我明白了
htmlentities() expects parameter 1 to be string, array given
尝试#2
@foreach ($vcpe as $key => $value)
<p>{!!$key!!} : {!!$value!!}</p>
@endforeach
我明白了
Array to string conversion
尝试#3
@foreach ($vcpe as $key => $value)
@foreach ($key as $k => $v)
<p>{{$k}} : {{$v}}</p>
@endforeach
@endforeach
我明白了
Invalid argument supplied for foreach()
我做错了什么?
我该如何解决?
谁能告诉我如何打印出我所有的对象的键/值?
【问题讨论】:
-
首先你能不能在控制器中做一个
print_r($vcpe),这样我们就可以看到这个数据结构的真实样子。将结果粘贴到您的问题 -
在尝试 2 中,其中一个值是数组。您尝试将其打印为字符串并得到相应的错误。在 Try 3 中,许多值不是数组,因此您不能使用 foreach 来遍历它们。您需要检查该值是否为数组,然后执行相应的任务。
-
试试
$newArray = (array)$vcpe;ande 然后使用foreach -
先将对象转为数组,然后用foreach循环,将对象转为数组,使用$array = (array) $yourObject;这个
-
我有感觉,不是对象而是$vcpe->dns的值,它是一个数组。删除
{{$value}}时可以循环不出错吗??
标签: php arrays laravel laravel-5 blade