得到一个奇怪的数组值

时间:2016-03-29 16:17:29

标签: php arrays json

当我加载数据库单个数据时,它看起来像数组, 但我不知道如何获得label_values中的值

的print_r($结果):

Array ( [custom_params] => custom_limit="0"|input_label="{\"label_values\":[\"\u9650\u5916\u5e36\",\"\u9650\u5167\u7528\",\"\u9650\u6642\u5546\u54c1\",\"\u514d\u9810\u7d04\",\"\u5373\u8cb7\u5373\u7528\",\"\u672c\u9031\u5f37\u6a94\",\"\u611b\u5fc3\u516c\u76ca\"]}"|repeat_label=""| ) 

json_encode($结果):

{"custom_params":"custom_limit=\"0\"|input_label=\"{\\\"label_values\\\":[\\\"\\u9650\\u5916\\u5e36\\\",\\\"\\u9650\\u5167\\u7528\\\",\\\"\\u9650\\u6642\\u5546\\u54c1\\\",\\\"\\u514d\\u9810\\u7d04\\\",\\\"\\u5373\\u8cb7\\u5373\\u7528\\\",\\\"\\u672c\\u9031\\u5f37\\u6a94\\\",\\\"\\u611b\\u5fc3\\u516c\\u76ca\\\"]}\"|repeat_label=\"\"|"}

尝试了foreach第一个lavel:

foreach($results as $k=>$v){
    echo $v;
}

得到:

custom_limit="0"|input_label="{\"label_values\":[\"\u9650\u5916\u5e36\",\"\u9650\u5167\u7528\",\"\u9650\u6642\u5546\u54c1\",\"\u514d\u9810\u7d04\",\"\u5373\u8cb7\u5373\u7528\",\"\u672c\u9031\u5f37\u6a94\",\"\u611b\u5fc3\u516c\u76ca\"]}"|repeat_label=""|

但不知道如何获得价值......

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

$results['custom_params']是由key=value对组成的竖线分隔列表,因此您需要将其拆分。 input_label值有JSON,您可以使用json_decode进行解析。

此外,您需要删除值中引号前的反斜杠。

$custom_params = explode('|', $results['custom_params']);
foreach ($custom_params as $param) {
    if (preg_match('/^input_label="(.*)"$/', $param, $match)) {
        $input_label = json_decode(str_replace('\"', '"', $match[1]), true);

        $label_values = $input_label['label_values'];
        break;
    }
}

DEMO