【问题标题】:Last item in iteration with PHPPHP 迭代中的最后一项
【发布时间】:2011-10-15 08:35:53
【问题描述】:

我想用逗号分隔迭代结果,但它不是数组。我想在视图中做,所以代码不应该很长。

<?php foreach ($roles as $role): ?>
    <?php echo $role->title; ?>
<?php endforeach; ?>

Result 对象实现了 Countable、Iterator、SeekableIterator、ArrayAccess。

【问题讨论】:

    标签: php orm iterator foreach countable


    【解决方案1】:

    不确定我是否理解您的要求(您的代码基本上似乎按照您所说的做?)我看到的唯一缺少的是用逗号分隔。

    <?php
    $first=true;
    foreach ($roles as $role) {
      if (!$first) echo ",";
      $first=false;
      echo $role->title;
    }
    ?>
    

    或者如果缓存没问题(字符串长度不太长):

    <?php
    $output="";
    foreach ($roles as $role) {
      $output.=$role->title.",";
    }
    echo substr($output,0,-1);//Trim last comma
    ?>
    

    【讨论】:

      【解决方案2】:

      如果您的$roles 变量是一个对象,请编写一个返回属性值数组的方法。比如:

      class Roles implements Countable, Iterator, SeekableIterator, ArrayAccess {
      
        //main body of the class here
      
        public function prop_as_array($prop){
          if(!property_exists('Role', $prop)) throw new Exception("Invalid property");
          $arr=array();
          if(count($this)==0) return $arr
          foreach($this as $role){
            $arr[]=$role->$prop;
          }
          return $arr;
        }
      
      }
      
      //on output page
      $roles=new Roles;
      echo implode(',', $roles->prop_as_array('title'));
      

      【讨论】:

        猜你喜欢
        • 2020-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-17
        • 2011-03-31
        • 2012-06-13
        • 1970-01-01
        相关资源
        最近更新 更多