diff --git a/lib/Twig/Extension/Core.php b/lib/Twig/Extension/Core.php index 5ddf21e9e..e015132ce 100644 --- a/lib/Twig/Extension/Core.php +++ b/lib/Twig/Extension/Core.php @@ -1488,7 +1488,7 @@ function twig_array_batch($items, $size, $fill = null) $result = array_chunk($items, $size, true); - if (null !== $fill) { + if (null !== $fill && !empty($result)) { $last = count($result) - 1; if ($fillCount = $size - count($result[$last])) { $result[$last] = array_merge( diff --git a/test/Twig/Tests/Fixtures/filters/batch_with_keys.test b/test/Twig/Tests/Fixtures/filters/batch_with_keys.test new file mode 100644 index 000000000..6015380e2 --- /dev/null +++ b/test/Twig/Tests/Fixtures/filters/batch_with_keys.test @@ -0,0 +1,10 @@ +--TEST-- +"batch" filter preserves array keys +--TEMPLATE-- +{{ {'foo': 'bar', 'key': 'value'}|batch(4)|first|keys|join(',') }} +{{ {'foo': 'bar', 'key': 'value'}|batch(4, 'fill')|first|keys|join(',') }} +--DATA-- +return array() +--EXPECT-- +foo,key +foo,key,0,1 diff --git a/test/Twig/Tests/Fixtures/filters/batch_with_zero_elements.test b/test/Twig/Tests/Fixtures/filters/batch_with_zero_elements.test new file mode 100644 index 000000000..b9c058d6b --- /dev/null +++ b/test/Twig/Tests/Fixtures/filters/batch_with_zero_elements.test @@ -0,0 +1,10 @@ +--TEST-- +"batch" filter with zero elements +--TEMPLATE-- +{{ []|batch(3)|length }} +{{ []|batch(3, 'fill')|length }} +--DATA-- +return array() +--EXPECT-- +0 +0