4

誰でも私を助けてくれることを願っています。JSON がインデックス化されていません(つまり、どの要素の上にもキーがありません)

[
{
"nome":"LABORGHINI GALLARDO",
"descrizione":"LAMBORGHINI GALLARDO ED. NERA- ANNO 2007- ",
"indirizzo_pubblicato":"autocaricateeea\/LABORGHINI GALLARDO31072013-023853\/LABORGHINI GALLARDO31072013-023853.json",
"indirizzo_immagine_copertina":"autocaricateeea\/LABORGHINI GALLARDO31072013-023853\/IMG_1414 (600x448).jpg",
"indirizzo_paginaauto":"autocaricateeea\/LABORGHINI GALLARDO31072013-023853\/index.html"
},
{
"nome":"RENAULT MEGANE",
"descrizione":"RENAULT MEGANE -ANNO 2006-DIESEL-CC. 1461",
"indirizzo_pubblicato":"autocaricateeea\/RENAULT MEGANE31072013-024103\/RENAULT MEGANE31072013-024103.json",
"indirizzo_immagine_copertina":"autocaricateeea\/RENAULT MEGANE31072013-024103\/P1080949 (600x450).jpg",
"indirizzo_paginaauto":"autocaricateeea\/RENAULT MEGANE31072013-024103\/index.html"
},
{
"nome":"FORD MONDEO",
"descrizione":"FORD MONDEO SINISTRATA- ANNO 2009- DIESEL- CC. 1997-",
"indirizzo_pubblicato":"autocaricateeea\/FORD MONDEO31072013-045216\/FORD MONDEO31072013-045216.json",
"indirizzo_immagine_copertina":"autocaricateeea\/FORD MONDEO31072013-045216\/P1080971 (600x450).jpg",
"indirizzo_paginaauto":"autocaricateeea\/FORD MONDEO31072013-045216\/index.html"
}
]

unset()しかし、PHP で要素を削除するために実行した後、出力 JSON は次のように表示されます。

{
"1":     //   <--- **** add a key before an element
{
"nome":"Fiat Punto ",
"descrizione":"Fiat Punto Bianca",
"indirizzo_pubblicato":"autocaricateeea\/Fiat Punto 14072013-042703\/Fiat Punto 14072013-042703.json",
"indirizzo_immagine_copertina":"autocaricateeea\/Fiat Punto 14072013-042703\/P1080713 (600x450).jpg",
"indirizzo_paginaauto":"autocaricateeea\/Fiat Punto 14072013-042703\/index.html"
},
...........
...........
...........

JSON の要素の前にキーがあることがわかります。この動作は、unset( PHP json_encode as object after PHP array unset() ) によって引き起こされることを知っています。

この動作を防ぐ方法はありますか?

4

6 に答える 6

2

この解決策が見つかるまで、同じ問題がありました:

array_values 手法に加えて、array_splice を使用して要素を削除し、1 つのステップでインデックスを再作成することができます。

unset($a[1]);

その代わり:

array_splice($a, 1, 1);

ここから引用:https://stackoverflow.com/a/3869219/4809658

于 2015-09-14T09:02:05.783 に答える
1

それを行う最善の方法は、

$json_arr = array_values($json_arr);
于 2014-08-23T09:40:07.917 に答える
1

クライアント側で問題を解決しましたが、PHP を使用してこの問題に対する私の解決策を示すと役立つと思いました。アイデアは、新しい配列を構築し、不要なアイテムを除外することです。この方法では、インデックスが作成されません。未設定によって引き起こされる問題、次のようなもの:

$new_nodes= array();
for ($j = 0; $j < count($composition->nodes); $j++)
{
   //exclude some nodes
   if ($id!= $composition->nodes[$j]->id)
   {
      // store only the nodes that you want:
      array_push($new_nodes, $composition->nodes[$j]);
   }
}
// and finally, use the new modified nodes array:
$composition->nodes= $new_nodes;
于 2015-06-17T13:27:00.067 に答える
0

なぜこの動作を防止する必要があるのですか? json を PHP 配列に変換すると、JSON 形式に関係なく、インデックス配列 (表示された数字を持つ) になります。

番号付けが正しくない場合は、http://php.net/manual/en/function.array-values.phpを使用して修正してください。

于 2013-08-14T14:29:43.097 に答える