将过滤器应用于数组中的每个项目,然后使用Twig对其进行JSON编码

时间:2018-01-26 10:16:18

标签: php twig

我有一系列电话号码

[ '1234567', '98765423' ... ]

我希望先将自定义过滤器phone应用于该过滤器,然后以JSON格式呈现结果。

我试过

{{ numbersArray | phone | json_encode }}

但它给了我一个错误,因为它期待一个字符串而不是一个数组。

有没有办法让Twig将phone过滤器应用于每个单独的数组项,然后将json_encode应用于过滤后的数组?

1 个答案:

答案 0 :(得分:1)

我似乎必须修改我的phone过滤器以接受stringarray

$twig->getEnvironment()->addFilter(new \Twig_SimpleFilter('phone', function ($input) {
    if( is_array($input) ){
        $result = [];
        foreach( $input as $number ) {
            $result[] = formatNumber($number);
        }

        return $result;
    }

    return formatNumber($input); 
}));