fork download
  1. <?php
  2.  
  3. $arr = [
  4. 'id' => [
  5. 1
  6. ],
  7. 'name' => [
  8. 'john'
  9. ],
  10. 'dept' => [
  11. 'val_1', 'val_2'
  12. ],
  13. 'to' => [
  14. 'one', 'two'
  15. ]
  16. ];
  17.  
  18. function convert($arr, $outArrCount) {
  19. $total = [];
  20. for ($i=0; $i<$outArrCount; $i++) {
  21. $entry = [];
  22. array_walk($arr, function ($val, $key) use (&$entry, $i, $outArrCount) {
  23. if (count($val) > 1) {
  24. $entry[$key] = $val[ floor((count($val) / $outArrCount) * $i) ];
  25. }
  26. else {
  27. $entry[$key] = $val;
  28. }
  29.  
  30. });
  31. $total[] = $entry;
  32. };
  33. return $total;
  34. }
  35. var_dump(convert($arr, 4));
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
array(4) {
  [0]=>
  array(4) {
    ["id"]=>
    array(1) {
      [0]=>
      int(1)
    }
    ["name"]=>
    array(1) {
      [0]=>
      string(4) "john"
    }
    ["dept"]=>
    string(5) "val_1"
    ["to"]=>
    string(3) "one"
  }
  [1]=>
  array(4) {
    ["id"]=>
    array(1) {
      [0]=>
      int(1)
    }
    ["name"]=>
    array(1) {
      [0]=>
      string(4) "john"
    }
    ["dept"]=>
    string(5) "val_1"
    ["to"]=>
    string(3) "one"
  }
  [2]=>
  array(4) {
    ["id"]=>
    array(1) {
      [0]=>
      int(1)
    }
    ["name"]=>
    array(1) {
      [0]=>
      string(4) "john"
    }
    ["dept"]=>
    string(5) "val_2"
    ["to"]=>
    string(3) "two"
  }
  [3]=>
  array(4) {
    ["id"]=>
    array(1) {
      [0]=>
      int(1)
    }
    ["name"]=>
    array(1) {
      [0]=>
      string(4) "john"
    }
    ["dept"]=>
    string(5) "val_2"
    ["to"]=>
    string(3) "two"
  }
}