三元foreach嵌套在if / else中

时间:2016-02-04 17:15:34

标签: php ternary

我想知道如何在三元内或替代语法中使用三元语法重写以下内容。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
PrintStream old = System.out;
System.setOut(ps);

2 个答案:

答案 0 :(得分:4)

没有三元一样的东西。但是,您可以像这样使用条件语句三元

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

<强>输出

  

foo,bar,John

<强>解释

我们创建一个闭包,返回所有标记的name属性数组,然后根据需要简单地内爆。如果标签为空,我们会在一行中显示foobar

答案 1 :(得分:2)

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