错误:某些个人资料页面上的数组到字符串转换

时间:2015-10-29 08:53:17

标签: php arrays yii

我在查看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";}

结果:

  • 3829BE
  • 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; ?>
    

    2 个答案:

    答案 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;
    

    希望得到这个帮助。