2016-07-16 4 views
1

Я пытаюсь преобразовать $customFieldName в массив, но я возвращаю его как строку. Я попробовал следующее:Get_post_meta строка массива в массив

1 Try

$field = array(); 
    $field = get_post_meta((int)$id[0], $customFieldName, true); 

2 Try

$field = array(); 
    $field = unserialize(get_post_meta((int)$id[0], $customFieldName, true)); 

Строка я возвращусь выглядит следующим образом:

«{\ "use_own_api \" ложь \ "google_auth_code \": \ "4 \/hLXqq9X7sX1s OY-K6MhpEZu6bc8fGGADKLnjlcWA-p4 \ "\ "google_api_key \": \ "AIzaSyAJjpxVYfZ0WQPZSPr72DOuKU3X-sXquqM \", \ "google_client_id \": \ "180054848980.apps.googleusercontent.com \", \ "google_client_secret \": \" \ sdfsd "\ "google_access_token \": \ "{\\" access_token \\ "\\" ya29.Ci8YA6-sfsd-asdfas \\", \\ "token_type \\" \\ "\\ Знаменосец", \ \ "expires_in \\": 3600, \\ "refresh_token \\" \\ "1 \/534ewsdcy \\", \\ "\\ создана": 1467867036} \ "\ "ga_active_web_property \": {\" __PHP_Incomplete_Class_Name \ ": \" Google_Webproperty \ "\ "ACCOUNTID \": \ "7489234 \", \ "childLink \": {\ "__ PHP_Incomplete_Class_Name \": \ "Google_WebpropertyChildLink \", \ "HREF \": \" HTTPS : \/\/www.googleapis.com \/аналитика \/v3 \/управление \/счета \/\/7489234 webproperties \/UA-7489234-1 \/Profiles \ "\ "Тип \": \" аналитика #profiles \ "}, \" создан \ ": \" 2016-06-28T19: 38: 17.530Z \», \ "ид \": \ "UA-7489234-1 \", \ "industryVertical \": \ "COMPUTERS_AND_ELECTRONICS \", \ "internalWebPropertyId \": \ "11922adsf \", \ "kind \": \ "analytics # webproperty \", \ "level \": \ ""

Тем не менее, все же я возвращаю его как строку.

Любые предложения, как получить массив назад как array.

Я ценю ваш ответ!

+0

Вы пробовали это. $ jArr = json_decode ($ jsonString, true); –

ответ

2

Я копирую вашу строку, но заменяю две слэши \\ на три \\\ (я делаю это только для правильной копии строки в котировках кода php), затем я и добавляю два}} в конце строки (смотрите в конце $ ул в коде ниже), чтобы иметь действительный JSON - после того, что я был в состоянии получить массив:

$st = '{\"use_own_api\":false,\"google_auth_code\":\"4\/hLXqq9X7sX1sOY-K6MhpEZu6bc8fGGADKLnjlcWA-p4\",\"google_api_key\":\"AIzaSyAJjpxVYfZ0WQPZSPr72DOuKU3X-sXquqM\",\"google_client_id\":\"180054848980.apps.googleusercontent.com\",\"google_client_secret\":\"sdfsd\",\"google_access_token\":\"{\\\"access_token\\\":\\\"ya29.Ci8YA6-sfsd-asdfas\\\",\\\"token_type\\\":\\\"Bearer\\\",\\\"expires_in\\\":3600,\\\"refresh_token\\\":\\\"1\/534ewsdcy\\\",\\\"created\\\":1467867036}\",\"ga_active_web_property\":{\"__PHP_Incomplete_Class_Name\":\"Google_Webproperty\",\"accountId\":\"7489234\",\"childLink\":{\"__PHP_Incomplete_Class_Name\":\"Google_WebpropertyChildLink\",\"href\":\"https:\/\/www.googleapis.com\/analytics\/v3\/management\/accounts\/7489234\/webproperties\/UA-7489234-1\/profiles\",\"type\":\"analytics#profiles\"},\"created\":\"2016-06-28T19:38:17.530Z\",\"id\":\"UA-7489234-1\",\"industryVertical\":\"COMPUTERS_AND_ELECTRONICS\",\"internalWebPropertyId\":\"11922adsf\",\"kind\":\"analytics#webproperty\",\"level\":\""' . '}}'; 
$strWithoutSlash = str_replace("\\\"",'"',$st); 
$array = json_decode($strWithoutSlash,true); 

Так может быть попробовать это (или что-то подобное с помощью str_replace перед тем json_decode):

$field = json_decode(str_replace("\\\"",'"',get_post_meta((int)$id[0], $customFieldName, true) . '}}'),true); 
+0

Thx для вашего ответа! Я все еще получаю строку обратно вместо массива. Какие-нибудь дополнительные предложения? – mrquad

+0

@mrquad Я обновляю свой ответ. –