これが私の最初の配列です:
$arr = array(
array('model'=>'123', 'garment'=>'coat', 'title'=>'aaa'),
array('model'=>'123', 'gender'=>'men', 'title'=>'aaa'),
array('model'=>'123', 'brand'=>'adidas', 'title'=>'aaa'),
array('model'=>'345', 'garment'=>'jacket', 'title'=>'bbb'),
array('model'=>'345', 'gender'=>'kids', 'title'=>'bbb'),
array('model'=>'345', 'brand'=>'nike', 'title'=>'bbb'),
array('model'=>'678', 'garment'=>'trainers', 'title'=>'ccc'),
array('model'=>'678', 'gender'=>'kids', 'title'=>'ccc'),
array('model'=>'678', 'brand'=>'', 'title'=>'ccc')
);
私は行きたいです:
$result = array(
array('model'=>'123', 'garment'=>'coat', 'gender'=>'men', 'brand'=>'adidas', 'title'=>'aaa'),
array('model'=>'345', 'garment'=>'jacket', 'gender'=>'kids', 'brand'=>'nike', 'title'=>'bbb'),
array('model'=>'678', 'garment'=>'trainers', 'gender'=>'kids', 'brand'=>'', 'title'=>'ccc')
)
親切に助けていただけませんか - ありがとうございます。これが私の試みた解決策ですが、大きな配列をソースしようとするとメモリが不足します。
ステップ 1 は次のとおりです。
//---------------------- STEP 1 ------
$result = array();
foreach($arr as $line) {
$result[] = $line['model'];
}
$result = array_values(array_unique($result));
ステップ 2 は次のとおりです。
//---------------------- STEP 2 ------
foreach($result as $r) {
$inter = array();
$inter['model'] = $r;
foreach($arr as $line) {
if ($r == $line['model']){
if (!isset($inter['title']) && isset($line['title'])) {
$inter['title'] = $line['title'];
}
if (!isset($inter['garment']) && isset($line['garment'])) {
$inter['garment'] = $line['garment'];
}
if (!isset($inter['gender']) && isset($line['gender'])) {
$inter['gender'] = $line['gender'];
}
if (!isset($inter['brand']) && isset($line['brand'])) {
$inter['brand'] = $line['brand'];
}
}
}
if (!isset($inter['title'])) {
$inter['title'] = '';
}
if (!isset($inter['garment'])) {
$inter['garment'] = '';
}
if (!isset($inter['gender'])) {
$inter['gender'] = '';
}
if (!isset($inter['brand'])) {
$inter['brand'] = '';
}
$results[] = $inter;
unset($inter);
}
unset($result);
return $results;