获取JSON数组并显示该数组的结果

时间:2016-09-16 11:48:46

标签: php arrays json laravel-4

我想在页面上显示来自api调用的一些数据。该数据用于比特币支付。所以我有订单,如果客户用比特币付款,我想看到确认,金额等。

Here is one example url返回json数据。

以下是我在控制器中尝试的内容

public function ordersView($orderId) {
    /** @var Order $order */
    $order = Order::where('order_id', $orderId)->first();
    if (!$order) {
        App::abort(404);
    }

    $url="http://btc.blockr.io/api/v1/tx/info/9585d5f635eddf737c8351bfe0879c3dbef3d94de9feda2bd74c990b06b7dc52";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL,$url);
    $result=curl_exec($ch); 
    curl_close($ch);

    $total = file_get_contents($url);

    return View::make('site.admin.orders_view', [
        'order' => $order,
        'total' => $total
    ]);
}

然后在视图上

@foreach($order->getOrderData($order->data) as $itemId => $item)

     // some product info like name, description etc..

    @foreach($total as $i => $totals)
            {{ $totals['confirmations'] }}
            {{ $totals['time_utc'] }}
    @endforeach
@endforeach

我得到的当前错误是

'Invalid argument supplied for foreach()

关于内在的foreach

    @foreach($total as $i => $totals)
            {{ $totals['confirmations'] }}
            {{ $totals['time_utc'] }}
    @endforeach

有人可以帮助我解析这些数据到底是什么吗?

1 个答案:

答案 0 :(得分:1)

你需要在数组格式中转换你的响应,因为你的响应是json 所以尝试使用json_decode()函数将json转换为数组...

    $url="http://btc.blockr.io/api/v1/tx/info/9585d5f635eddf737c8351bfe0879c3dbef3d94de9feda2bd74c990b06b7dc52";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL,$url);
    $result=curl_exec($ch); 
    curl_close($ch);

    $total =json_decode( file_get_contents($url),true);

你的回答是......

Array
(
    [status] => success
    [data] => Array
        (
            [tx] => 9585d5f635eddf737c8351bfe0879c3dbef3d94de9feda2bd74c990b06b7dc52
            [block] => 429605
            [confirmations] => 468
            [time_utc] => 2016-09-13T12:59:24Z
            [is_coinbased] => 0
            [trade] => Array
                (
                    [vins] => Array
                        (
                            [0] => Array
                                (
                                    [address] => 19c9JnCoyRqUkUjJkbdK9qDApk2a5Vy558
                                    [is_nonstandard] => 
                                    [amount] => -0.103855
                                    [n] => 0
                                    [type] => 0
                                    [vout_tx] => ebe35a1aee39c17668a26a6d91d49e83651ee1c5fe28f23130202e617054e545
                                )

                        )

                    [vouts] => Array
                        (
                            [0] => Array
                                (
                                    [address] => 1DsRkxNy8LAAbi6kEh6ZoeZGjAVBuia4uw
                                    [is_nonstandard] => 
                                    [amount] => 0.00295729
                                    [n] => 0
                                    [type] => 1
                                    [is_spent] => 1
                                )

                            [1] => Array
                                (
                                    [address] => 1NusFWAG3mgkLszWo5oH13FLbwVaJZ6aRL
                                    [is_nonstandard] => 
                                    [amount] => 0.10069771
                                    [n] => 1
                                    [type] => 1
                                    [is_spent] => 0
                                )

                        )

                )

            [vins] => Array
                (
                    [0] => Array
                        (
                            [address] => 19c9JnCoyRqUkUjJkbdK9qDApk2a5Vy558
                            [is_nonstandard] => 
                            [amount] => -0.10385500
                            [n] => 0
                            [type] => 0
                            [vout_tx] => ebe35a1aee39c17668a26a6d91d49e83651ee1c5fe28f23130202e617054e545
                        )

                )

            [vouts] => Array
                (
                    [0] => Array
                        (
                            [address] => 1DsRkxNy8LAAbi6kEh6ZoeZGjAVBuia4uw
                            [is_nonstandard] => 
                            [amount] => 0.00295729
                            [n] => 0
                            [type] => 1
                            [is_spent] => 1
                            [extras] => Array
                                (
                                    [asm] => OP_DUP OP_HASH160 8d2af96bbb1c0464c8129db247458769b6767a10 OP_EQUALVERIFY OP_CHECKSIG
                                    [script] => 76a9148d2af96bbb1c0464c8129db247458769b6767a1088ac
                                    [reqSigs] => 1
                                    [type] => pubkeyhash
                                )

                        )

                    [1] => Array
                        (
                            [address] => 1NusFWAG3mgkLszWo5oH13FLbwVaJZ6aRL
                            [is_nonstandard] => 
                            [amount] => 0.10069771
                            [n] => 1
                            [type] => 1
                            [is_spent] => 0
                            [extras] => Array
                                (
                                    [asm] => OP_DUP OP_HASH160 f05a37d55fa0512b32320cf362bb96f94d886259 OP_EQUALVERIFY OP_CHECKSIG
                                    [script] => 76a914f05a37d55fa0512b32320cf362bb96f94d88625988ac
                                    [reqSigs] => 1
                                    [type] => pubkeyhash
                                )

                        )

                )

            [fee] => 0.00020000
            [days_destroyed] => 0.05
            [is_unconfirmed] => 
            [extras] => 
        )

    [code] => 200
    [message] => 
)