在php中使用相同的数据填充数组

时间:2017-09-08 13:17:49

标签: php arrays

我有一个数组,其中包含一些从数据库返回的数据,问题是并非所有键都关联,我应该将缺少的数据库填入数据中。

我的数组默认为:

array:1 [▼
  9 => array:2 [▼
    4 => array:3 [▼
      "Orange" => array:3 [▼
        "price" => "600.00"
        "total" => "690.00"
      ]
      "Apple" => array:3 [▼
        "price" => "650.00"
        "total" => "870.00"
      ]
      "Banana" => array:3 [▼
        "price" => "50"
        "total" => "40"
      ]
    ]
    21 => array:1 [▼
      "Apple" => array:3 [▼
        "price" => "44"
        "total" => "33"
      ]
    ]
  ]
]

数组应具有相同的结构,但数据为0

结果:

array:1 [▼
  9 => array:2 [▼
    4 => array:3 [▼
      "Orange" => array:2 [▼
        "price" => "600.00"
        "total" => "690.00"
      ]
      "Apple" => array:2 [▼
        "price" => "650.00"
        "total" => "870.00"
      ]
      "Banana" => array:2 [▼
        "price" => "50"
        "total" => "40"
      ]
    ]
    21 => array:3 [▼
      "Apple" => array:2 [▼
        "price" => "44"
        "total" => "33"
      ],
      "Orange" => array:2 [▼
        "price" => "0"
        "total" => "0"
      ],
      "Banana" => array:2 [▼
        "price" => "0"
        "total" => "0"
      ]
    ]
  ]
]

2 个答案:

答案 0 :(得分:0)

下面的“for”修改每个数组并添加任何新值,并避免重复值。基本上,它找到差异,然后合并,设置第一个数组克隆每个数组。     

$fruits = array (
    1 => array('Manzana', 'Naranja', 'Pera'),
    2 => array('Pera', 'Sandia'),
    3 => array('Manzana', 'Melocotones')
);
print_r($fruits);





for ($i = 1; $i <= count($fruits)-1; $i++) {
    $result = array_diff($fruits[1], $fruits[1+$i]);
    $merge = array_merge($fruits[1+$i], $result);
    $fruits[1+$i] = $merge;
    $fruits[1] = $merge;
}

print_r($fruits);
?>

Here to see how run it! https://repl.it/KqUi/3

答案 1 :(得分:0)

如果你总是使用第一个元素作为样板文件,你可以这样做:

$boilerplate = reset($array);
array_walk_recursive($boilerplate, function (&$value) {
    $value = 0;
});

$array = array_map(function ($items) use ($boilerplate) {
    return array_merge($items, array_diff_key($boilerplate, $items));
}, $array);

这是working demo