0 レビュー
3 回答
php-Jsonを配列にデコードする方法
次のような配列があります:
$templateStyleArr = array(
0 => array(
'text' => 'General Text',
'default_value' => '#444',
'scopval' => 'general',
),
1 => array(
'text' => 'Accent Color',
'default_value' => '#c91a1a',
'scopval' => 'Accent',
),
2 => array(
'text' => 'Button Hover',
'default_value' => '#2ec72e',
'scopval' => 'dark_btn_hover',
),
3 => array(
'text' => 'Button Text',
'default_value' => '#3300f5',
'scopval' => 'btn_txt',
),
)
この配列をPHPを使用してJson形式でデータベースに保存したい。json_encode関数を使用している。 Jsonは完全に保存されました。問題は、保存されたjsonを(json_decodeを使用して)デコードしようとすると、上記の配列が返されません。
わからない
0
レビュー
答え :
解決策:
マニュアルを参照すると、 assoc
パラメータを{-に設定する必要がある場合があります。 code-2}
を使用して、返されたオブジェクトがassociative配列に変換されるようにします。
$ array = json_decode($ json_string_from_db、TRUE);
わからない
0
レビュー
答え :
解決策:
配列だけを文字列としてデータベースに格納する場合は、 serialize()を試してみてください。unserializeを使用すると、まったく同じ配列が得られます。戻り値
$templateStyleArr = array(
0 => array(
'text' => 'General Text',
'default_value' => '#444',
'scopval' => 'general',
),
1 => array(
'text' => 'Accent Color',
'default_value' => '#c91a1a',
'scopval' => 'Accent',
),
2 => array(
'text' => 'Button Hover',
'default_value' => '#2ec72e',
'scopval' => 'dark_btn_hover',
),
3 => array(
'text' => 'Button Text',
'default_value' => '#3300f5',
'scopval' => 'btn_txt',
),
);
$string = serialize( $templateStyleArr );
var_dump( unserialize( $string ) );
配列インデックスが実際には単なる数値である場合は、次を使用できます:
$string = json_encode( $templateStyleArr );
$arrayFromJson = json_decode( $string );
foreach( $arrayFromJson as $index => $jsonObject ) {
// cast object to array
$arrayFromJson[$index] = (array) $jsonObject;
}
var_dump( $arrayFromJson );
わからない
0
レビュー
答え :
解決策:
基本的に、jsonエンコードは、デコード時に配列をオブジェクトに変換するため、オブジェクトを配列に生成するための関数を作成する必要があります。この関数を試して、正しく変換されるようにしてください
function to_array( $object ){
if( !is_object( $object ) && !is_array( $object ) ){
return $object;
}
if( is_object( $object ) ){
$object = get_object_vars( $object );
}
return array_map( 'to_array', $object );
}
$array = to_array( json_decode($fromdb) );
print_r( $array );
私にとっては問題ないので、試してみましょう:)
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。