我正在尝试从数组中获取所需的输出。 我从这样的for循环中获取数据数组:
Array
(
[TIMESLOTID] => 27
[DATE] => za 05-04-2014 15:00
[ProductID] => 196
[VariantID] => 1079
)
Array
(
[TIMESLOTID] => 27
[DATE] => za 12-04-2014 15:00
[ProductID] => 196
[VariantID] => 1079
)
Array
(
[TIMESLOTID] => 27
[DATE] => za 29-03-2014 15:00
[ProductID] => 196
[VariantID] => 1079
)
Array
(
[TIMESLOTID] => 23
[DATE] => ma 07-04-2014 10:00
[ProductID] => 196
[VariantID] => 1083
)
现在如果匹配[TIMESLOTID],[ProductID]和[VariantID]的值,它们应合并为一个数组,否则将合并为一个单独的数组。输出结果如下:
Array
(
[TIMESLOTID] => 27
[DATE] =>
Array
(
[DATE] => za 05-04-2014 15:00,
[DATE] => za 12-04-2014 15:00,
[DATE] => za 29-03-2014 15:00
),
[ProductID] => 196,
[VariantID] => 1079
),
Array
(
[TIMESLOTID] => 23,
[DATE] => ma 07-04-2014 10:00,
[ProductID] => 196,
[VariantID] => 1083
)
请帮我解决这个问题。提前谢谢。
答案 0 :(得分:0)
好的,在任何回答之前都有一些准确性。
由于某些原因,您要获取的数组无效:
所以,一个有效的数组就是:
Array(
[27] => Array(
[ProductID] => 196,
[VariantID] => 1079,
[Dates] => Array(
[0] => 'za 05-04-2014 15:00',
[1] => 'za 12-04-2014 15:00'
.....
)
),
[23] => Array(
[ProductID] => 196,
[VariantID] => 1083,
[Dates] => Array(
[0] => 'ma 07-04-2014 10:00'
)
)
)
如果数组的格式是这样的,那么你将能够编写一个将输入数组转换为这样的数组的函数。希望这会有所帮助。
编辑:现在,这是负责转型的功能。 我没有测试它,但似乎算法很好:)function transformArray($inputArray){
$toReturn = array();
foreach($inputArray as $product){
if(in_array($product['TIMESLOTID'],array_keys($toReturn))){
array_push($toReturn[$product['TIMESLOTID']]['Dates'],$product['DATE']);
}
else {
$toReturn[$product['TIMESLOTID']] = array(
'ProductID' => $product['ProductID'],
'VariantID' => $product['VariantID'],
'Dates' => array(
$product['DATE']
)
);
}
}
return $toReturn;
}
答案 1 :(得分:-1)
$list = array(
array
(
'TIMESLOTID' => 27,
'DATE' => "05-04-2014 15:00",
'ProductID' => 196,
'VariantID' => 1079
),
array
(
'TIMESLOTID' => 27,
'DATE' => "12-05-2014 15:00",
'ProductID' => 196,
'VariantID' => 1079
),
array
(
'TIMESLOTID' => 27,
'DATE' => "29-03-2014 15:00",
'ProductID' => 196,
'VariantID' => 1079
),
array
(
'TIMESLOTID' => 23,
'DATE' => "07-04-2014 10:00",
'ProductID' => 196,
'VariantID' => 1083
)
);
$return = array();
for($i=0;$i<sizeof($list);$i++) {
if(!array_key_exists($list[$i]['TIMESLOTID'], $return)) {
$return[$list[$i]['TIMESLOTID']] = $list[$i];
} else {
if(sizeof($return[$list[$i]['TIMESLOTID']]['DATE']) == 1) {
$date = $return[$list[$i]['TIMESLOTID']]['DATE'];
$return[$list[$i]['TIMESLOTID']]['DATE'] = array($date,$list[$i]['DATE']);
} else {
array_push($return[$list[$i]['TIMESLOTID']]['DATE'],$list[$i]['DATE']);
}
}
}