來自我無法控制的第 3 方平臺的 Json 回應。
$json = '{
"question1": "answera",
"question2": [
"answerb",
"answerc"]
}';
任何“問題”都可以有多個“答案”,但是如果該問題只有一個“答案”,則回傳時沒有 [] 括號的回應-這會破壞插入到下一個系統中(我也無法控制) ) 因為它期待 []。
使用 PHP 有一種方法可以將 json 字串操作為以下,與“答案”的數量無關:
"question1": ["answera"],
uj5u.com熱心網友回復:
您可以將字串內容轉換為陣列。但是您必須為此目的迭代所有答案。
使用 if 條件創建陣列
<?php
$json = '{
"question1": "answera",
"question2": [
"answerb",
"answerc"
]
}';
// second parameter for array result
$array = json_decode($json, true);
foreach ($array as $question => $answer) {
if (is_string($answer) === true) {
$array[$question] = [ $answer ];
}
}
這導致...
array(2) {
'question1' =>
array(1) {
[0] =>
string(7) "answera"
}
'question2' =>
array(2) {
[0] =>
string(7) "answerb"
[1] =>
string(7) "answerc"
}
}
對于任何進一步的 JSON 處理,您可以將 PHP 陣列轉換回 JSON。
$json = json_encode($array);
結果成...
string(109) "{
"question1": [
"answera"
],
"question2": [
"answerb",
"answerc"
]
}"
用(陣列)鑄造
@RickN提到了從評論中獲取的另一個解決方案。鑄造 with(array)避免了 if 條件,并且可能會更快,如果這對您的應用程式很重要。
foreach ($array as $question => $answer) {
$array[$question] = (array) $answer;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/494158.html
上一篇:計數字符和字串nC
