2010-03-28 1 views
2

Я пытаюсь выяснить, существует ли более оптимальный способ создания списка свойств объекта объекта. (Извинения за грубую формулировку, я на самом деле не очень эксперт по ОО)Оптимальный способ создания списка свойств объекта PHP с символом-разделителем, implode()?

У меня есть объект «событие», в котором есть коллекция «художников», каждый из которых имеет имя «artist_name». На моем выходе HTML я хочу простой список имен художников, разделенных запятой.

PHP-метод implode() представляется лучшим способом создания списка значений, разделенных запятыми. Я в настоящее время итерации через объект и нажмите значения во временном массиве «artistlist», поэтому я могу использовать implode().

Это самое короткое, что я мог придумать. Есть ли способ сделать это более элегантным?

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

ответ

0

Кроме того, только создавая строковый себя и прилагая запятую после каждого художника (что означает, что вы должны также иметь дело с конечной запятой соответственно), у вас есть самый краткий способ сделать это уже.

+0

точно, последняя запятая была тем, чего я пытался избежать – Chris

9

Существует не более быстрый способ. С PHP 5.3, вы можете использовать array_map и anonymous function:

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

Что более элегантный, я оставляю за вами.

+0

в <5.3, вы все равно можете это сделать, но вы используете create_function для создания анонимной функции. – intuited

+0

интересный, не думал об этом. Мне нравится. :) – Chris

+0

@intuited: 'create_function' просто так неэлегантно. Обычно я никогда не беспокоюсь об этом. – outis

Смежные вопросы