duanqin7791 2015-09-30 19:10
浏览 63
已采纳

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

I am pulling from a Magento instance using the SOAP V2 API. Magento is returning the results of my requests as multidimensional arrays, which i am encoding in json to help parse into html. However when i run into this format:

array(
    array(
        array()
    )
)

I am getting an Notice: Array to string conversion error.

Here is my code:

//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);

The error is happening on the second implode in the for loop.

Update 14:45pm CST

This is what the actual output looks like

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条回答 默认 最新

  • doudu6100 2015-09-30 20:15
    关注

    As long as your data does not add another level o data:

    <?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; ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services