【问题标题】:Optimal way to generate list of PHP object properties with delimiter character, implode()?生成带有分隔符的 PHP 对象属性列表的最佳方法,implode()?
【发布时间】:2011-02-01 15:56:12
【问题描述】:

我正在尝试找出是否有更优化的方法来创建对象的子对象属性列表。 (抱歉措辞粗鲁,我并不是真正的 OO 专家)

我有一个对象“事件”,其中包含“艺术家”的集合,每个艺术家都有一个“艺术家名称”。在我的 HTML 输出中,我想要一个以逗号分隔的艺术家姓名的普通列表。

PHP 的 implode() 似乎是创建以逗号分隔的值列表的最佳方式。我目前正在遍历对象并将值推送到临时数组“artistlist”中,以便可以使用 implode()。

这是我能想到的最短的。有没有办法更优雅地做到这一点?

$artistlist = array();
foreach ($event->artists as $artist)
{
    $artistlist[] = $artist->artist_name;
}
echo implode(', ', $artistlist);

【问题讨论】:

    标签: php list object iteration implode


    【解决方案1】:

    真的没有更快的方法。在 PHP 5.3 中,您可以使用 array_mapanonymous function

    implode(', ', array_map(function ($artist) { 
            return $artist->artist_name;
        } , $event->artists));
    

    哪个更优雅,我留给你。

    【讨论】:

    • 有趣,没想到。我喜欢。 :)
    • @intuited: create_function 太不优雅了。我通常从不打扰它。
    【解决方案2】:

    除了自己创建字符串并在每个艺术家之后附加逗号(这意味着您还需要适当地处理最后的逗号)之外,您已经有了最简洁的方法。

    【讨论】:

    • 没错,最后一个逗号是我试图避免的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2014-12-30
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多