#php #arrays #filter #twig #timber
#php #массивы #Фильтр #twig #timber
Вопрос:
Я хочу перетасовать массив и добавил следующий фильтр в свой functions.php
add_filter( 'timber/twig', function ( $twig ) {
$twig->addFilter( new TimberTwig_Filter( 'shuffle', function ( $array ) {
$shuffle = shuffle( $array );
return $shuffle;
} ) );
return $twig;
} );
Однако следующий код ничего не возвращает:
{% for item in ["WordPress", "React", "Craft", "NodeJS", "Laravel", "Tailwind", "Vue", "Stencil"]|shuffle %}
<h2 class="outline">{{ item }}</h2>
{% endfor %}
Комментарии:
1. Параметр «array» отправляется ссылкой на функцию shuffle , а сама функция возвращает
true
/false
независимо от того, была ли перетасовка успешной или нет, а не фактический перетасованный массив
Ответ №1:
Следуя комментарию DarkBee, я заставил его работать со следующим кодом:
add_filter( 'timber/twig', function ( $twig ) {
$twig->addFilter( new TimberTwig_Filter( 'shuffle', function ( $array ) {
shuffle( $array );
$newArray = [];
foreach ( $array as $item ) {
array_push( $newArray, $item );
}
return $newArray;
} ) );
return $twig;
} );