我有2个阵列:
$im=explode(",", $data['products']);
$imi=explode(",", $data['period']);
相关联:
$data['products'] = balon,globo,sesta
$data['period'] = 1,1,2
所以当我合并结果时:
Array ( [0] => DS Basic [1] => DS Pro [2] => DS Start [3] => 1 [4] => 1 [5] => 2 )
问题是我需要将它关联起来:
DS Basic = 1 , DS Pro = 1 , DS Start = 2
我正在使用array_merge($im,$imi)
如何使用foreach
执行此操作?
我想这样:
Array ( [0] => DS Basic [1] => DS Pro [2] => DS Start)
Array ( [0] => 1 [1] => 1 [2] => 2 )
因此,当我使用它时,它可能就像
using foreach
DS basic has a period of 1
DS pro has a period of 1
DS start has a period of 2
答案 0 :(得分:1)
您可以按如下方式修复合并后的结果:
$merged = array_merge($im,$imi);
$period = array();
// Loop through the merged items
foreach ($merged as $k=>$v) {
// Check if the value is an integer
if ((int)$v) {
// Move this value to the period array
$period[] = $v;
// Remove it from the merged array
unset($merged[$k]);
}
}
// Reindex the merged array to revalue the keys
$merged = array_values($merged);
// Test the output
echo '<h1>Merged Array:</h1>';
echo '<pre>';
echo print_r($merged);
echo '</pre>';
echo '<h1>Excess Array:</h1>';
echo '<pre>';
echo print_r($period);
echo '</pre>';
exit;
答案 1 :(得分:1)
$merged = array();
if (count($im) != count($imi)) {
print "custom merging is not possible...";
}
else {
for($i=0 ; $i<count($im) ; $i++) {
$merged[$im[$i]] = $imi[$i];
}
}
答案 2 :(得分:1)
你可以做foreach
$newArr = [];
foreach($im $key => $val)
{
$newArr[] = [$val[0] => $imi[$key][0], $val[1] => $imi[$key][1], $val[2] => $imi[$key][2]];
}
print_r($newArr);
或者将它结合起来:
$result = array_combine($im, $imi);
答案 3 :(得分:1)
您需要的是组合而非合并;)请查看array_combine 上的php手册。
请不要考虑您想要的结果将一组数据作为键(示例中的产品数组中的值),您不应该有重复的值,否则您将丢失它们