使用数组生成多维对象

时间:2015-07-27 13:13:24

标签: javascript php arrays object

我正在生成这样的对象:

console snapshot

如您所见,education是对象内的数组, 但我想要的是degree_1major_1及其值在同一个对象中。

这就是我想要的方式,但education为数组: enter image description here

另一件事: 当我在我的php中var_dump它对阵列和一切都很好。但是当我的javascript只是一个数组时,我的javascript会获得第二个图像 - 对象的对象。

public function show($id)
{
    $tmp = array();
    $post = array();
    $postInfo = Post::find($id);
    $params =  DB::select( DB::raw("SELECT param.*, sys_param_values.*,param_value.*,type_post.*,
                                       param.name AS paramName, 
                                       doc_param.name AS docParamName 
                                       FROM param
                                       LEFT JOIN doc_param ON param.doc_param_id = doc_param.id
                                       LEFT JOIN sys_param_values ON param.id = sys_param_values.param_id
                                       LEFT JOIN param_value ON sys_param_values.value_ref = param_value.id
                                       LEFT JOIN type_post ON sys_param_values.ref_id = type_post.id WHERE type_post.id = ".$id));

    $isMultiple = false;
    $post['postInfo'] = $postInfo['original'];
    foreach($params as $k=>$v) {

        $iteration    = $v->iteration;
        $docParamName = $v->docParamName;
        $paramName    = $v->paramName;

        if($v->value_ref == null) {
            $value = $v->value_short;
        } else {
            $value = $v->value;
        }

        if($iteration) {

            $post[$docParamName][$iteration][$paramName] = $value;
            // need to return education as array not as object
            // $post[$docParamName][] = array($paramName=>$value) ;

        }elseif(!$iteration) {
            $post[$docParamName][$paramName] = $value;
        }
    }   

    return Response::json($post);
}

2 个答案:

答案 0 :(得分:1)

将第一个元素从education设为0,现在为1,这就是json_encode将其解析为对象的原因。

答案 1 :(得分:0)

我不知道您的数据源是什么样的,但是在我看来,您正在获取垂直数据并且他们希望水平显示它。如果是这种情况,您的数据需要以简单循环的方式存储,如果不是,则需要一些PHP逻辑。

在向我们展示您的桌面内容示例之前,我们无法真正帮助您。

干杯