我在查看userprofile时循环访问数组:
<?php foreach(unserialize($contact->search_data) as $searchData): ?>
<li><?= $searchData; ?></li>
<?php endforeach; ?>
但在某些userprofile页面中我收到此错误: 数组到字符串转换
这是来自正在运行的用户配置文件的数据:
a:2:{s:8:"zip_code";s:6:"3829BE";s:8:"distance";s:2:"15";}
结果:
这是来自userprofile的数据,错误为:
a:3:{s:12:"Specialiteit";a:1:{i:0;s:18:"Fit worden/blijven";}s:8:"zip_code";s:6:"4731TP";s:8:"distance";s:2:"20";}
如何捕获此错误?
SOLUTION:
<?php if($contact->search_data): ?>
<ul>
<?php foreach(unserialize($contact->search_data) as $searchData): ?>
<li><?php
if(is_array($searchData)){
echo '<ul>';
foreach($searchData as $searchDatas):
echo '<li>';
echo $searchDatas;
echo '</li>';
endforeach;
echo'</ul>';
}else{
echo $searchData; } ?></li>
<?php endforeach; ?>
</ul>
<?php else: ?><i>Geen</i><?php endif; ?>
答案 0 :(得分:0)
你不能回应数组。使用print_r()
。然后,您将了解如何访问其中的元素。
<li><?php print_r($searchData) ?></li>
答案 1 :(得分:0)
正如我从序列化数据中看到的那样,数组键&#39; Specialiteit&#39;是一个数组而不是字符串,这就是为什么你不能简单地回应它。
您可以按如下方式编辑代码:
foreach($arr as $searchData):
echo '<li>';
if( gettype($searchData) == 'array' )
print_r($searchData);
if( gettype($searchData) == 'string' )
echo $searchData;
echo '</li>';
endforeach;
希望得到这个帮助。