我有一个这样的数组:
$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 :(得分:2)
参考the manual,您可能需要将assoc
参数设置为TRUE
,以便将返回的对象转换为关联数组。
$array = json_decode($json_string_from_db, TRUE);
答案 1 :(得分:0)
如果您只想将数组存储为数据库中的字符串,可以尝试serialize(),通过反序列化,您将获得与返回值完全相同的数组
$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 );
答案 2 :(得分:-1)
基本上你的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 );
它的工作对我来说没问题,所以试试吧:)。