wzul

Deep Map Pairs

Aug 2nd, 2021 (edited)
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.21 KB | None | 0 0
  1. <?php
  2.  
  3. function deep_map_pairs($data = array()){
  4.   $a = array();
  5.  
  6.   foreach ($data as $k => $v){
  7.     if ($k == 'x_signature'){
  8.       continue;
  9.     }
  10.     if (is_array($v) && array_keys($v) !== range(0, count($v) - 1)) {
  11.       $b = array();
  12.       $dmp = deep_map_pairs($v);
  13.       $flatted_dmp = new RecursiveIteratorIterator(new RecursiveArrayIterator($dmp));
  14.       foreach ($flatted_dmp as $p){
  15.         $b[] = $k.$p;
  16.       }
  17.       $a[] = $b;
  18.     } else if (is_array($v)){
  19.       $b = array();
  20.       foreach ($v as $c){
  21.          $b[] = deep_map_pairs(array($k => $c));
  22.       }
  23.       $a[] = $b;
  24.     } else {
  25.       $a[] = $k.$v;
  26.     }
  27.   }
  28.  
  29.   return $a;
  30. }
  31.  
  32. $f = array(
  33.   "a"=> "a",
  34.   "c"=> ["c"],
  35.   "b"=> "b",
  36.   "d"=> ["test" => "test"]
  37. );
  38.  
  39. $new = deep_map_pairs($f);
  40. $flatted_new = new RecursiveIteratorIterator(new RecursiveArrayIterator($new));
  41.  
  42. $array_flatted = [];
  43. foreach ($flatted_new as $p){
  44.   $array_flatted[] = $p;
  45. }
  46.  
  47. $compacted_af = array_filter($array_flatted, function($var){
  48.    return ($var !== NULL && $var !== FALSE && $var !== "");
  49. });
  50.  
  51. sort($compacted_af, SORT_REGULAR | SORT_FLAG_CASE);
  52. $imploded_str = implode('|', $compacted_af);
  53. echo print_r($imploded_str, true);
  54.  
  55.  
Add Comment
Please, Sign In to add comment