<?php
/*
* This code should loop through $data, converting null to 0.
*
* If it finds an array inside the data, it loops through that
* converting null values to 0.
*
* The error'ed line throws the following PHP error which breaks the code:
* -------
* PHP Warning: Cannot use a scalar value as an array
* -------
*/
$data = json_decode('{"last":"0.692776960","high":"0.692776960","low":"0.692776960","avg":0.6928,"vol":"0.252273837","vols":{"bid":null,"ask":null}}', true);
$new_data = array_replace_recursive($data, function ($value) {
if ($value === null) {
return 0;
}
});
var_dump($new_data);
Fatal error: Uncaught TypeError: array_replace_recursive(): Argument #2 must be of type array, Closure given in /in/DCp6N:14
Stack trace:
#0 /in/DCp6N(14): array_replace_recursive(Array, Object(Closure))
#1 {main}
thrown in /in/DCp6N on line 14
Process exited with code 255.
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28
Fatal error: Uncaught TypeError: array_replace_recursive(): Argument #2 must be of type array, Closure given in /in/DCp6N:18
Stack trace:
#0 /in/DCp6N(18): array_replace_recursive(Array, Object(Closure))
#1 {main}
thrown in /in/DCp6N on line 18
Process exited with code 255.
Output for 7.3.12 - 7.3.33, 7.4.0 - 7.4.33
Warning: array_replace_recursive(): Expected parameter 2 to be an array, object given in /in/DCp6N on line 18
NULL