троичный foreach, вложенный в if / else

Мне было интересно, как я могу переписать следующее, используя троичный в пределах троичного или в рамках альтернативного синтаксиса.

$tags = get_the_tags();
if (!empty($tags)) {
foreach ($tags as $tag) {
echo $tag->name . ', ';
}
} else {
echo 'foobar';
}

3

Решение

Нет такой вещи как троичный foreach. Однако вы можете сделать свое условное утверждение троичным, как это

echo empty($tags) ? 'foobar' :
implode(', ',array_map(create_function('$o', 'return $o->name;'),$tags)) ;

😉

Выход

Фу, бар, Джон

объяснение

Мы создаем замыкание, которое возвращает массив name свойство всех ваших тегов, затем просто взорвать его, как вы хотите. Если теги пусты, мы показываем foobarвсе в одну строку.

4

Другие решения

Решение с array_reduce:

echo (empty($tags))? 'foobar': array_reduce($tags, function($prev, $item){
return $prev.(($prev)? ", " : "").$item->name;
}, "");

// the output:
bob, john, max

http://php.net/manual/ru/function.array-reduce.php

2

По вопросам рекламы [email protected]