2017-07-20 30 views
-4

我有此JSON在我試圖轉換爲字符串變量舉行?如何在PHP中將json對象打包爲字符串?

$json_object = '[{"125":"1"},{"126":"2"},{"127":"3"},{"128":"4"},{"129":"5"},{"130":"6"},{"131":"7"},{"132":"8"},{"133":"9"},{"134":"10"},{"135":"11"}]'; 

我想我的最終結果是什麼東西,看起來像這樣:

$json_object1 = '1,2,3,4,5,6,7,8,9,10,11'; 
$json_object2 = '125,126,127,128,129,130,131,132,133,134,135'; 

有沒有我們可以通過修改implode(",",$json_object)函數來實現這種方式?

另一個問題: 任何想法,我們如何把這個

{"26":"Child - 1500.00","28":"Foreigner - 4000.00","27":"Resident - 3000.00"} 

到列表像

26 : Child - 1500.00 
27: Resident - 3000.00 
28: Foreigner - 4000.00 
+0

解碼的JSON到一個數組,提取陣列中的每個對象的值和鍵到一個新的數組。不要想到字符串修改的水平。 – deceze

+2

有作爲JSON對象沒有這樣的事情....它是所有的字符串,直至將其解碼爲對象或陣列 – charlietfl

+1

['JSON'](https://en.wikipedia.org/wiki/JSON)**是**字符串。 – axiac

回答

1
$json_object = '[{"125":"1"},{"126":"2"},{"127":"3"},{"128":"4"},{"129":"5"},{"130":"6"},{"131":"7"},{"132":"8"},{"133":"9"},{"134":"10"},{"135":"11"}]'; 

$json = json_decode($json_object); 
echo implode(", ", array_map(function($obj) { foreach ($obj as $p => $v) { return $p;} }, $json)); 
echo "<br>"; 
echo implode(", ", array_map(function($obj) { foreach ($obj as $p => $v) { return $v;} }, $json)); 

參見https://3v4l.org/p3p45

+0

任何想法如何我們可以把這個'{「26」:「Child-1500.00」,「28」:「Foreigner - 4000.00」,「27」:「Resident - 3000.00」}' 1500.00
28:外國人 - 4000.00
27:居民 - 3000.00' – nick

0

第一轉換JSON數據到PHP數組,然後存儲所有不同的數組中鍵和值,那麼內爆它

<?php 
$json_object = '[{"125":"1"},{"126":"2"},{"127":"3"},{"128":"4"},{"129":"5"},{"130":"6"},{"131":"7"},{"132":"8"},{"133":"9"},{"134":"10"},{"135":"11"}]'; 
$array_data = json_decode($json_object, true); 

foreach($array_data as $data) { 
    foreach($data as $key => $value) { 
     $array_key[] = $key; 
     $array_value[] = $value; 
    } 
} 

$final_key = implode(",", $array_key); 
$final_value = implode(",", $array_value); 
echo $final_key; 
echo "<br>"; 
echo $final_value; 

然後輸出是:

125,126,127,128,129,130,131,132,133,134,135 

1,2,3,4,5,6,7,8,9,10,11 
+1

那是......一半的答案... – deceze

+0

確定檢查我更新的答案,我誤讀全問題 –

-2

可以達到這樣,

$json_object = '[{"125":"1"},{"126":"2"},{"127":"3"},{"128":"4"},{"129":"5"},{"130":"6"},{"131":"7"},{"132":"8"},{"133":"9"},{"134":"10"},{"135":"11"}]'; 

    $key_arr = array(); 
    $val_arr = array(); 

$json_arr = json_decode($json_object); 

    foreach($json_arr as $val) 
    { 

     foreach($val as $key => $value) 
     { 
      $key_arr[] = $key; 
      $val_arr[] = $value; 
     } 
    } 

$resultStringKeys = implode(",", $key_arr); 
$resultStringValues = implode(",", $val_arr); 

和回聲您$resultStringKeys$resultStringValues,你會得到你的輸出。

+0

現在,這會工作。 – Virb

+1

這是誰downvoting?這完美的作品! – nick

1

試試這個:

<?php 

$jsonString = '[{"125":"1"},{"126":"2"},{"127":"3"},{"128":"4"},{"129":"5"},{"130":"6"},{"131":"7"},{"132":"8"},{"133":"9"},{"134":"10"},{"135":"11"}]'; 

$decoded = json_decode($jsonString, true); 

$keys = []; 
$values = []; 

foreach($decoded as $item) { 
    foreach($item as $key => $value) { 
     $keys[] = $key; 
     $values[] = $value; 
    } 
} 

$resultStringKeys = implode(",", $keys); 
$resultStringValues = implode(",", $values); 

var_dump($resultStringKeys, $resultStringValues); 

輸出:

string(43) "125,126,127,128,129,130,131,132,133,134,135" 
string(23) "1,2,3,4,5,6,7,8,9,10,11" 
1
$json_object = '[{"125":"1"},{"126":"2"},{"127":"3"},{"128":"4"},{"129":"5"},{"130":"6"},{"131":"7"},{"132":"8"},{"133":"9"},{"134":"10"},{"135":"11"}]'; 
$arr1 = []; $arr2=[]; 
$jsonobj = json_decode($json_object); 
foreach ($jsonobj as $val){ 
    $Arrval = (array) $val; 
    foreach ($Arrval as $k=>$v){ 
     $arr1[]=$k;  
     $arr2[]=$v; 
    } 
} 
$json_object1 = implode(",",$arr1); 

$json_object2 = implode(",",$arr2); 

出看跌期權

125,126,127,128,129,130,131,132,133,134,135 
1,2,3,4,5,6,7,8,9,10,11 
1

另一種可能的解決方案(不是最好的,如果你的JSON的大小輸入以MB爲單位,但對於sev來說足夠好輸入的全部擦除KBS):

$input = '[{"125":"1"},{"126":"2"},{"127":"3"},{"128":"4"},{"129":"5"},{"130":"6"},{"131":"7"},{"132":"8"},{"133":"9"},{"134":"10"},{"135":"11"}]'; 

// Decode the JSON into arrays; TRUE as the second argument requires arrays, not objects 
$data = json_decode($input, TRUE); 

// Run through the list, extract the data into a new list 
$output = array_reduce(
    $data, 
    function(array $carry, array $item) { 
     // Put the keys and values of $item into the corresponding lists on $carry 
     $carry['keys'] = array_merge($carry['keys'], array_keys($item)); 
     $carry['vals'] = array_merge($carry['vals'], array_values($item)); 
     return $carry; 
    }, 
    // Start with empty lists of keys and values 
    array('keys' => array(), 'vals' => array()) 
); 

// That's all; $output['keys'] contains the keys, $output['values'] contains the values.  
echo('Keys: '. implode(',', $output['keys'])."\n"); 
echo('Values: '.implode(',', $output['vals'])."\n"); 
相關問題