3v4l.org

run code in 300+ PHP versions simultaneously
<?php final class ArrayCleaner { public static function clean(array $value): array { foreach ($value as $k => $v) { if (\is_array($v)) { $value[$k] = self::clean($v); if (0 == \count($value[$k])) { unset($value[$k]); } } elseif (empty($v)) { unset($value[$k]); } } return $value; } } $input = [ 'empty_string_to_remove' => '', 'empty_int_to_remove' => 0, 'empty_string_number_to_remove' => '0', 'value_to_keep' => 5, 'empty_array_to_remove' => [], 'empty_array_of_empty_arrays_to_remove' => [ 'one' => [], 'two' => [], 'three' => [false, null, '0'], ], 'array_to_keep_1' => [ 'value' => 1, ], 'array_to_keep_2' => [ 'empty_to_remove' => [], 'array_to_keep' => ['yes'], ], ]; print_r(ArrayCleaner::clean($input));
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
Array ( [value_to_keep] => 5 [array_to_keep_1] => Array ( [value] => 1 ) [array_to_keep_2] => Array ( [array_to_keep] => Array ( [0] => yes ) ) )

preferences:
139.4 ms | 408 KiB | 5 Q