fork download
  1. <?php
  2.  
  3. function flattenArray(array &$result, $value, string $key = "")
  4. {
  5. if (!is_array($value)) {
  6. $result[$key] = $value;
  7. return $result;
  8. }
  9. foreach ($value as $subKey => $subArray) {
  10. $newKey = $key !== "" ? $key . "_" . $subKey : $subKey;
  11. flattenArray($result, $subArray, $newKey);
  12. }
  13. return $result;
  14. }
  15.  
  16. $nestedArray = [
  17. "name" => "John",
  18. "pets" => [
  19. ["id" => 1, "name" => "snooop"],
  20. ["id" => 2, "name" => "medor"],
  21. ],
  22. "job" => ["title" => "developper"],
  23. ];
  24.  
  25. $intermediateResult = [];
  26. $flattened = flattenArray($intermediateResult, $nestedArray);
  27. var_dump($flattened);
Success #stdin #stdout 0.02s 26204KB
stdin
Standard input is empty
stdout
array(6) {
  ["name"]=>
  string(4) "John"
  ["pets_0_id"]=>
  int(1)
  ["pets_0_name"]=>
  string(6) "snooop"
  ["pets_1_id"]=>
  int(2)
  ["pets_1_name"]=>
  string(5) "medor"
  ["job_title"]=>
  string(10) "developper"
}
array(6) {
  ["name"]=>
  string(4) "John"
  ["pets_0_id"]=>
  int(1)
  ["pets_0_name"]=>
  string(6) "snooop"
  ["pets_1_id"]=>
  int(2)
  ["pets_1_name"]=>
  string(5) "medor"
  ["job_title"]=>
  string(10) "developper"
}