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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里