如何转换这个php关联数组?

时间:2014-04-04 12:22:37

标签: php arrays cakephp associative-array

我有这个php关联输入数组。

array(
    (int) 0 => array(
        'Data' => array(
            'id' => '12',
            'type_id' => '1',
            'data_value' => '35.5000'
        ),
        'Type' => array(
            'id' => '1',
            'name' => 'Temperature'
        )
    ),
    (int) 1 => array(
        'Data' => array(
            'id' => '11',
            'type_id' => '1',
            'data_value' => '33.7000'
        ),
        'Type' => array(
            'id' => '1',
            'name' => 'Temperature'
        )
    )

我想将其转换为此输出数组;

array(
    (int) 0 => array(
        (int) 0 => array(
            'v' => (int) 1
        ),
        (int) 1 => array(
            'v' => '35.5000'
        )
    ),
    (int) 1 => array(
        (int) 0 => array(
            'v' => (int) 2
        ),
        (int) 1 => array(
            'v' => '33.7000'
        )
    )

元素data_value从输入数组中提取到输出数组中。

我写的代码看起来像这样;

                $data2 = array();
                foreach ($InputArray as $key=>$value)
                {
                    $data2[] = array(
                                array(                                        
                                    array('v' => $key),
                                    array('v' => $value['Data']['data_value']) 
                            )
                        );
                }  

不幸的是,这段代码不起作用。此代码的输出如下所示;

array(
    (int) 0 => array(
        (int) 0 => array(
            (int) 0 => array(
                [maximum depth reached]
            ),
            (int) 1 => array(
                [maximum depth reached]
            )
        )
    ),
    (int) 1 => array(
        (int) 0 => array(
            (int) 0 => array(
                [maximum depth reached]
            ),
            (int) 1 => array(
                [maximum depth reached]
            )
        )
    )

我做错了什么?为什么我会收到错误"达到最大深度"?如何检索所需的输出数组?我实际上是在cakephp中这样做。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

这是一个包裹array()到很多人:

        $data2 = array();
        foreach ($InputArray as $key=>$value)
        {
            $data2[] = array(                                      
                            array('v' => $key),
                            array('v' => $value['Data']['data_value']) 

                );
        } 

您可以看到此工作here。最好在ideomeplnkr等服务中准备代码,以便人们更方便地帮助您进行调试。

答案 1 :(得分:1)

据我所知,问题与PHP http://www.hardened-php.net/suhosin/configuration.html#suhosin.executor.max_depth的设置有关。你可以咨询你的托管服务提供商吗?