Function iterTree ($ data ){ $ RetData = array (); $ Data = json_decode ($ data, true ); If (! Is_array ($ data) & empty ($ data )){ Echo 'error! '. "N "; } Else { $ Queue = array (); Foreach ($ data as $ field => $ value ){ $ Queue [] = $ field; } $ Head = 0; $ Tail = count ($ queue ); While ($ head <$ tail ){ $ Field = $ queue [$ head ++]; $ Path = explode ("/", $ field ); $ TmpData = & $ data; Foreach ($ path as $ key => $ ph ){ $ TmpData = & $ tmpData [$ ph]; } If (is_array ($ tmpData )&&! Empty ($ tmpData )){ $ NewField = $ field; Foreach ($ tmpData as $ curField => $ curValue ){ $ NewField = $ field. '/'. $ curField; $ Queue [$ tail ++] = $ newField; } } Else { $ RetData [] = $ field; } } } Return $ retData; } // Test data $ Data = file_get_contents ("http://restapi.ele.me/v1/restaurants? Extras % 5B % 5D = food_activity & extras % 5B % 5D = restaura Nt_activity & extras % 5B % 5D = certification & fields % 5B % 5D = id & fields % 5B % 5D = name & fiel Ds % 5B % 5D = phone & fields % 5B % 5D = promotion_info & fields % 5B % 5D = name_for_url & fields % 5B % 5D = flavors & fields % 5B % 5D = is_time_ensure & fields % 5B % 5D = is_premium & fields % 5B % 5D = image_path & fields % 5B % 5D = rating & fie Lds % 5B % 5D = is_free_delivery & fields % 5B % 5D = minimum_order_amount & fields % 5B % 5D = order_lead_time & fields % 5 B % 5D = is_support_invoice & fields % 5B % 5D = is_new & fields % 5B % 5D = is_third_party_delivery & fields % 5B % 5D = is_in_book_time & fields % 5B % 5D = rating_count & fields % 5B % 5D = address & fields % 5B % 5D = month_sales & fields % 5B % 5D = delivery_detail & fields % 5B % 5D = minimum_free_delivery_amount & fields % 5B % 5D = minimum_order_des Cription & fields % 5B % 5D = minimum_invoice_amount & fields % 5B % 5D = opening_hours & fields % 5B % 5D = is_online_pay Ment & fields % 5B % 5D = status & fields % 5B % 5D = supports & fields % 5B % 5D = in_delivery_area & geohash = wx4g07 J0w1v7 & is_premium = 0 & limit = 1000 & offset = 24 & type = geohash "); $ Ret = iterTree ($ data ); Print_r ($ ret ); |