Я анализирую лист Excel и получаю этот JSON:
[
{
"A":"Samsung",
"Groupe":{
"F":"TV",
"D":"HDR"
}
},
{
"A":null,
"Groupe":{
"F":null,
"D":null
}
},
{
"A":"Sony",
"Groupe":{
"F":"T.V",
"D":"LCD"
}
},
{
"A":"Sony",
"Groupe":{
"F":"PS4",
"D":"Pro edition"
}
},
{
"A":"Sony",
"Groupe":{
"F":"Smart Phone",
"D":"Quad core"
}
}
]
Php код:
$data = [];
for ($row = 15; $row <= 25; $row++) {
$data[] = [
'A' => $worksheet->getCell('A'.$row)->getValue(),
'Groupe' => [
'F' => $worksheet->getCell('F'.$row)->getValue(),
'D' => $worksheet->getCell('D'.$row)->getValue()
]
];
}
Как организовать (отсортировать) json в зависимости от "A"
?
Я попробовал это, но все еще не мог объединить "Groupe"
для одного и того же "A"
вместе:
- Убрать пустые колонны.
- Создать копию массива.
- Перегруппировать поля для того же элемента в новом массиве (это не сработало)
Код:
$data1 = [];
for ($l = 0; $l < count($data); $l++){
$data1[$l] = $data[$l];
}
for ($j = 0; $j < count($data); $j++) {
if($data[$j]['A'] != NULL){
if($data[$j]['A'] !== $data[$j+1]['A']){
$data1[$j] = $data[$j];
}
else{
$data1[$j]['A']= $data[$j]['A'];
$data1[$j]['Groupe']= array_merge($data[$j]['Groupe'], $data[$j+1]['Groupe']);
}
}
}
РЕДАКТИРОВАТЬ: Результат, который я получаю для $ data1, точно такой же, как и для входного JSON (за исключением того, что NULL был удален), поэтому похоже, что слияние с массивом не работает, и мне нужно следующее:
[
{
"A":"Samsung",
"Groupe":{
"F":"TV",
"D":"HDR"
}
},
{
"A":"Sony",
"Groupe": [{
"F":"T.V",
"D":"LCD"
},{
"F":"PS4",
"D":"Pro edition"
}, {"F":"Smart Phone",
"D":"Quad core"
}]
}]
Кроме того, он показывает мне следующее:
Примечание: неопределенное смещение: 11 в C: \ xampp \ htdocs \ phptoexcel.php в строке 43 Строка 43: if($data[$j]['A'] !== $data[$j+1]['A']){