执行SOAP请求时出现多维数组问题

时间:2015-09-30 19:10:36

标签: php magento soap

我使用SOAP V2 API从Magento实例中提取。 Magento将我的请求结果作为多维数组返回,我在json中编码以帮助解析为html。但是,当我遇到这种格式时:

array(
    array(
        array()
    )
)

我收到注意:数组到字符串转换错误。

这是我的代码:

//Make sure a query is set
if (!empty($_GET['q'])) {

    $getQuery = $_GET['q'];

    //Requests
    switch ($getQuery) {
        case 'allorders':
            $result = json_decode(json_encode($client->salesOrderList($session)), true);
            break;
        case 'inventory':
            $result = json_decode(json_encode($client->catalogInventoryStockItemList($session, array(695, 694, 693, 692))), true);
            break;
        case 'products':
            $result = json_decode(json_encode($client->catalogProductList($session)), true);
            break;
    }

    //if (!empty($result)) {
    ?>

    <table>
        <thead>
            <tr>
                <th><?php echo implode('</th><th>', array_keys(current($result))); ?></th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($result as $row): $row; ?>
                <tr>
                    <td><?php echo implode('</td><td>', $row); ?></td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>

    <?php
    //}
} else {
    echo "No Results Found";
}

// Close the session
$client->endSession($session);

错误发生在for循环中的第二个内爆。

更新时间14:45 CST

这是实际输出的样子

Array
(
    [0] => Array
        (
            [product_id] => 481
            [sku] => 012
            [name] => Twill Cap
            [set] => 9
            [type] => simple
            [category_ids] => Array
                (
                    [0] => 3
                    [1] => 4
                    [2] => 5
                    [3] => 11
                )

            [website_ids] => Array
                (
                    [0] => 2
                )

        )
)

1 个答案:

答案 0 :(得分:0)

只要您的数据没有添加其他级别的数据:

<?php foreach($bar as $row): ?>
               <tr>
                    <td><?php echo implode('</td><td>', array_map(function($e) {
                return is_array($e) ? implode(', ', $e) : $e;
            },  $row)); ?></td>
                </tr>
<?php endforeach; ?>