PHP在数组之间添加缺少的键

前端之家收集整理的这篇文章主要介绍了PHP在数组之间添加缺少的键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码
  1. $a = array('a' => 'some value','b' => 'some value','c' => 'some value');
  2. $b = array('a' => 'another value','d' => 'another value','e' => 'another value','f' => 'another value');
  3. $c = array('b' => 'some more value','x' => 'some more value','y' => 'some more value','z' => 'some more value');
  4.  
  5. $d = array($a,$b,$c);

打印$d将输出

  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [a] => some value
  6. [b] => some value
  7. [c] => some value
  8. )
  9.  
  10. [1] => Array
  11. (
  12. [a] => another value
  13. [d] => another value
  14. [e] => another value
  15. [f] => another value
  16. )
  17.  
  18. [2] => Array
  19. (
  20. [b] => some more value
  21. [x] => some more value
  22. [y] => some more value
  23. [z] => some more value
  24. )
  25.  
  26. )

我将如何组合数组键并最终得到以下输出

  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [a] => some value
  6. [b] => some value
  7. [c] => some value
  8. [d] =>
  9. [e] =>
  10. [f] =>
  11. [x] =>
  12. [y] =>
  13. [z] =>
  14. )
  15.  
  16. [1] => Array
  17. (
  18. [a] => another value
  19. [b] =>
  20. [c] =>
  21. [d] => another value
  22. [e] => another value
  23. [f] => another value
  24. [x] =>
  25. [y] =>
  26. [z] =>
  27. )
  28.  
  29. [2] => Array
  30. (
  31. [a] =>
  32. [b] => some more value
  33. [c] =>
  34. [d] =>
  35. [e] =>
  36. [f] =>
  37. [x] => some more value
  38. [y] => some more value
  39. [z] => some more value
  40. )
  41.  
  42. )

提前感谢您提供有关如何实现这一目标的任何帮助.

是的,在这种情况下你可以使用array_merge:
  1. $a = array('a' => 'some value','z' => 'some more value');
  2. $d = array($a,$c);
  3. $keys = array();
  4. foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($d)) as $key => $val) $keys[$key] = '';
  5. $data = array();
  6. foreach($d as $values) {
  7. $data[] = array_merge($keys,$values);
  8. }
  9.  
  10. echo '<pre>';
  11. print_r($data);

编辑:另一种方法是使用与空配对的键创建密钥对值,然后映射每个$d并合并:

  1. $keys = array_keys(call_user_func_array('array_merge',$d));
  2. $key_pair = array_combine($keys,array_fill(0,count($keys),null));
  3. $values = array_map(function($e) use ($key_pair) {
  4. return array_merge($key_pair,$e);
  5. },$d);

猜你在找的PHP相关文章