3v4l.org

run code in 300+ PHP versions simultaneously
<?php $raw = array( 'firstname' => 'Foo', 'lastname' => 'Bar', 'nickname' => '', 'birthdate' => [ 'day' => '', 'month' => '', 'year' => '', ], 'likes' => [ 'cars' => ['Subaru Impreza WRX STi', 'Mitsubishi Evo', 'Nissan GTR'], 'bikes' => [], ], 'zero' => 0, 'deeper' => [ 'zeroString' => '0', 'null' => null ], 'false' => false, ); function recursivelyRemoveEmpties(array $array): array { foreach ($array as $key => &$value) { if (is_array($value)) { $value = recursivelyRemoveEmpties($value); if (!$value) { unset($array[$key]); } continue; } if ($value === '') { unset($array[$key]); } } return $array; } var_export(recursivelyRemoveEmpties($raw));
Output for 8.0.1 - 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 ( 'firstname' => 'Foo', 'lastname' => 'Bar', 'likes' => array ( 'cars' => array ( 0 => 'Subaru Impreza WRX STi', 1 => 'Mitsubishi Evo', 2 => 'Nissan GTR', ), ), 'zero' => 0, 'deeper' => array ( 'zeroString' => '0', 'null' => NULL, ), 'false' => false, )

preferences:
102.13 ms | 407 KiB | 5 Q