多维数组与许多子数组?如何使用foreach in value [B]在前端打印值


Multidimensional array with many sub arrays? how to use foreach in value [B] to print values in frontend

使用Webservices,我收到以下格式的回复:

Array
(
[Data] => Array
    (
        [A] => Array
            (
                [B] => Array
                    (
                        [0] => Array
                            (
                                [C] => Array
                                    (
                                        [value] => some value1
                                    )
                                [D] => Array
                                    (
                                        [value] => some value2
                                    )
                                [E] => some value3
                            )
                        [1] => Array
                            (
                                [C] => Array
                                    (
                                        [value] => some value4
                                    )
                                [D] => Array
                                    (
                                        [value] => some value5
                                    )
                                [E] => 5
                            )
                    )
                [value] => 
使用magento作为PHP框架,我创建了一个显示以下信息的控制器
    public function bynumberAction(){
        $t = new 'RocketShipIt'Track('fedex');
        $response = $t->track('770190256519');
//        parse results
        $events['C'] = $response['A']['B']['C'];
        $events['D'] = $response['A']['B']['D']
        $events['E'] = $response['A']['B']['E']
//        serve results
        $this->loadLayout( array('default','shipping_track_bynumber'));
        $this->_initLayoutMessages('customer/session');
        $this->getLayout()->getBlock('track_bynumber')
                ->setCollection($events)
                ->setTemplate('shipping/track/bynumber.phtml');
        $this->renderLayout();
    }

在前端phtml (bynumber.phtml)文件中我放入:

<?php $res = $this->getCollection() ?>
<?php foreach ($res as $row) {echo $row['C'] . ' ' . $row['D'] . ' ' . $row['E'] . '<br />';} ?>

显示无信息。感谢任何帮助。brgds

还有更多问题。首先,在函数bynumberAction的第6行和第7行命令后面有一个语法错误——缺少分号。

第二:为什么你有不同的数组结构在你的控制器,如果你知道如何响应?

你使用:$response['A']['B']['C'];

响应看起来:$response['Data']['A']['B']['0']['C'];

在你的控制器中试试:

$events = array()
foreach ($response['Data']['A']['B'] as $data)
{
    $events[] = $data;
}

…在模板中:

foreach ($res as $row) { echo $row['C']['value'] ... }

乍一看你漏掉了一个深度:

代替$events['C'] = $response['A']['B']['C'];,你应该有$events['C'] = $response['A']['B'][0]['C'];$events['C'] = $response['A']['B'][1]['C'];或做一个循环,取决于你想要什么。