У меня есть данные, которые я вставил ниже. Я хочу объединить на основе имени, т.е. шаблон имени ab c находится на другом языке, я хочу, чтобы он был в информационном имени, категории и всех его языках в одном индексе.
[{
"name": "abc",
"category": "new_cat",
"selectedLanguage": [{
"de": "Deutsch",
"de_status": "APPROVED"
}]
}, {
"name": "abc",
"category": "new_cat",
"selectedLanguage": [{
"en": "English",
"en_status": "APPROVED"
}]
}, ....
Как упоминалось выше Я хочу получить результат как json, вставленный ниже.
[{
"name": "abc",
"category": "new_cat",
"selectedLanguage": [{
"de": "Deutsch",
"de_status": "APPROVED"
}, {
"en": "English",
"en_status": "APPROVED"
}]
},...{
"name": "unique_temp",
"category": "TICKET_UPDATE",
"selectedLanguage": [{
"en": "English",
"en_status": "REJECTED"
}, {
"fr": "French",
"fr_status": "REJECTED"
}]
}]
Я написал для него код
$trimArr; //this data array
$finalTempArr = array();
$finalArr = array();
foreach ($trimArr as $tr) {
$checkIfExist = $this ->in_array_r($wr['name'], $finalArr);
if($checkIfExist == false){
$finalTempArr['name'] = $tr['name'];
$finalTempArr['category'] = $tr['category'];
$finalTempArr['selectedLanguage'] = $tr['selectedLanguage'];
}else {
array_push($finalTempArr['selectedLanguage'],$tr['selectedLanguage']);
}
array_push($finalArr, $finalTempArr);
}
echo json_encode($finalArr);
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item)
&& $this->in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}