2017-02-28 28 views
0

我想在mysql数据库中存储几个表单域。这些特定字段可以有多个选定的值。所以我喜欢将这个值存储为json_encode格式的值。为什么我的php函数没有返回json格式的值?

现在,当我为每个表单字段编码时,我可以将这些值以json格式存储在mysql数据库中。因为重复我想这功能,但它返回一个数组

function radioValue($radiodata) { 
    $tmpArray = array(); 
    $tmpArrayLen = count($radiodata); 
    for ($i = 0; $i < $tmpArrayLen; $i++) { 
     $tmpArray[$i] = $radiodata[$i]; 
    } 
    $tmpValue = json_encode($tmpArray); 
    return $tmpValue; 
} 

所以不{“1”:“值1”},但[“值1”]

我有什么??忽视

顺便说一句,这就是为什么每场工作的一部分

$tmpArray = array(); 
     $len = count($posted_data["field1"]); 
     for ($i = 0; $i < $len; $i++) { 
      $tmpArray[$i] = $posted_data["field1"][$i]; 
     } 
     $storeValue = json_encode($tmpArray); 
+0

另外,你把$ radiodata放在另一个数组中,然后enocde它 - 只是直接enc ode $ radiodata – Mihai

+2

'[“value1”]'是[有效的JSON](https://3v4l.org/XEbg1),它是放在$ tmpValue中的数据的JSON表示。你为什么期望它是'{“1”:“value1”}?你把值放在'$ tmpValue'开始于索引'0','json_encode()'的输出是正确的。 – axiac

+1

这是数字数组和关联之间的区别。 – nerdlyist

回答

1

你必须对它进行解码在编码后:

$futureArray = radioValue($radiodata); 

$array = json_decode($futureArray); 

此外,添加一个true作为第二个参数,这将是关联数组

$array = json_decode($futureArray, true); 
+1

他希望json返回,所以我不知道你在回答什么问题。 – Mihai

+1

'json_decode('['value1']')'无论如何都返回数组,因为在JSON中编码的值是一个数组,而不是一个对象。备注方括号。 – axiac

相关问题