1. <?php
  2. /**
  3. * Flattens nested cookie structures.
  4. *
  5. * @param array $cookies An array of cookies, where each cookie is an associative array.
  6. * @return array A flattened array of cookies. Returns an empty array on failure.
  7. */
  8. function flattenCookies(array $cookies): array
  9. {
  10. $flattened = [];
  11. foreach ($cookies as $cookie) {
  12. if (is_array($cookie)) {
  13. foreach ($cookie as $key => $value) {
  14. if (is_array($value)) {
  15. // Recursively flatten nested arrays
  16. $flattened[$key] = flattenCookies([$value]);
  17. } else {
  18. $flattened[$key] = $value;
  19. }
  20. }
  21. } else {
  22. // Handle non-array cookie entries gracefully (e.g., skip or log)
  23. error_log("Invalid cookie entry: " . var_export($cookie, true)); // Log the error
  24. }
  25. }
  26. return $flattened;
  27. }
  28. // Example Usage (for testing)
  29. if (isset($_COOKIE['myCookie'])) {
  30. $cookies = $_COOKIE; // Get all cookies
  31. $flattenedCookies = flattenCookies($cookies);
  32. if (!empty($flattenedCookies)) {
  33. print_r($flattenedCookies);
  34. } else {
  35. echo "No cookies found or flattening failed.\n";
  36. }
  37. } else {
  38. echo "No cookies found.\n";
  39. }
  40. ?>

Add your comment