我有以下数组
Array
(
[0] => Array
(
[id_product_option] => 1
[id_option] => 1
[id_product] => 3
[option_value] => White
[option_name] => color
)
[1] => Array
(
[id_product_option] => 2
[id_option] => 2
[id_product] => 3
[option_value] => 9oz
[option_name] => size
)
[2] => Array
(
[id_product_option] => 3
[id_option] => 1
[id_product] => 3
[option_value] => Blue
[option_name] => color
)
)
我需要做的是遍历它并找到id_option值匹配的那些并将它们分组到一个看起来像
的新数组中Array
(
[0] => Array
[0] => Array
(
[id_product_option] => 1
[id_option] => 1
[id_product] => 3
[option_value] => White
[additional_cost] => 0
[is_active] => 1
[created_on] => 2014-11-15 01:29:35
[option_name] => color
[option_text] => Color
)
[1] => Array
(
[id_product_option] => 3
[id_option] => 1
[id_product] => 3
[option_value] => Blue
[additional_cost] => 0
[is_active] => 1
[created_on] => 2014-11-15 01:29:35
[option_name] => color
[option_text] => Color
)
[1] => Array
(
[id_product_option] => 2
[id_option] => 2
[id_product] => 3
[option_value] => 9oz
[additional_cost] => 0
[is_active] => 1
[created_on] => 2014-11-15 01:29:35
[option_name] => size
[option_text] => Size
)
)
将id_option 1的选项组合在一起
我试过以下但没有运气
$groupOptions = array();
$prev = "";
foreach($productOptions as $key=>$options) {
$id_option = $options['id_option'];
if($id_option != $prev) {
$groupOptions[] = $productOptions[$key];
}
$prev = $id_option;
}
答案 0 :(得分:1)
您应该使用该id_option作为新数组中的键,否则您将不得不寻找新数组以查找匹配项目的位置,这是您在第一个循环中所做的事情
$newarray = array();
foreach($oldarray as $item) {
$newarray[$item['id_option']][] = $item;
}
答案 1 :(得分:0)
我已经测试了你的例子,似乎工作正常:
$notFactored; # you should provide here your input array
$factored = array();
foreach($notFactored as $nf) {
$found = FALSE;
foreach($factored as &$f) { # passed by address !
if(!empty($f[0]) && $nf['id_option'] == $f[0]['id_option']) {
$f[] = $nf;
$found = TRUE;
break;
}
}
if(!$found) {
$factored[count($factored)][] = $nf;
}
}
print 'my factored array : ' . print_r($factored);
希望有助于:)