How can I sort this json data in php?
I'm trying to display only the menu__item_name in foreach it's working. but I don't knw how to sort data.
I want to sort this JSON array by menu_item_sort
?
How can I do that?
I'm using the below code to display menu__item_name
$obj = json_decode($list->mi_des);
$Name =$obj->{'menu__item_name'};
$arr_name = array($Name);
$arr_name_imp = implode(" ",$arr_name);
$arr_name_exp = explode("|",$arr_name_imp);
foreach($arr_name_exp as $i =>$key) {
echo $key;
}
The data
{
"menu__item_name":"test1|test2|test3",
"menu_item_price":"775.00|100|30",
"menu_item_description":"Melon Ball |Big mac|cocke",
"menu_item_sort":"1|3|2",
"menu_item_status":"1|1|1",
"menu_item_display":"1|1|0"
}
Thanks in advance.
Decode json string, explode each array element and do loop as per "menu_item_sort"
. hope this would help.
$str = '{
"menu__item_name":"test1|test2|test3",
"menu_item_price":"775.00|100|30",
"menu_item_description":"Melon Ball |Big mac|cocke",
"menu_item_sort":"1|3|2",
"menu_item_status":"1|1|1",
"menu_item_display":"1|1|0"
}';
$strArr = json_decode($str);
$menu__item_name_arr = explode('|', $strArr->menu__item_name);
$menu_item_price_arr = explode('|', $strArr->menu_item_price);
$menu_item_description_arr = explode('|', $strArr->menu_item_description);
$menu_item_sort_arr = explode('|', $strArr->menu_item_sort);
$menu_item_status_arr = explode('|', $strArr->menu_item_status);
$menu_item_display_arr = explode('|', $strArr->menu_item_display);
foreach($menu_item_sort_arr as $item){
$key = $item - 1; //array index start from 0
$finalArr['menu__item_name'][] = isset($menu__item_name_arr[$key]) ? $menu__item_name_arr[$key] : '' ;
$finalArr['menu_item_price'][] = isset($menu_item_price_arr[$key]) ? $menu_item_price_arr[$key] : '' ;
$finalArr['menu_item_description'][] = isset($menu_item_description_arr[$key]) ? $menu_item_description_arr[$key] : '';
$finalArr['menu_item_sort'][] = isset($menu_item_sort_arr[$key]) ? $menu_item_sort_arr[$key] : '' ;
$finalArr['menu_item_status'][] = isset($menu_item_status_arr[$key]) ? $menu_item_status_arr[$key] : '' ;
$finalArr['menu_item_display'][] = isset($menu_item_display_arr[$key]) ? $menu_item_display_arr[$key] : '';
}
foreach($finalArr as $k => $arr){
$newArr[$k] = implode('|', $arr);
}
$sortedJson = (object) $newArr;
print_r($sortedJson);
echo json_encode($sortedJson);