如何用PHP解析JSON

时间:2017-06-15 08:06:23

标签: php arrays json parsing

我需要帮助......

如何以这种格式解析数据:https://api.coinmarketcap.com/v1/ticker/

我尝试在php中设置代码

$url = 'https://api.coinmarketcap.com/v1/ticker/';
$content = file_get_contents($url);
$json = json_decode($content, true);
print_r($json);

这将列出所有这样的值..

  

数组([0] =>数组([id] =>比特币[名称] =>比特币[符号] =>   BTC [rank] => 1 [price_usd] => 2448.04 [price_btc] => 1.0   [24h_volume_usd] => 1935820000.0 [market_cap_usd] => 40128026876.0   [available_supply] => 16391900.0 [total_supply] => 16391900.0   [percent_change_1h] => 3.47 [percent_change_24h] => -11.1   [percent_change_7d] => -12.29 [last_updated] => 1497512954)[1] =>   数组([id] => ...

如何访问某些值。例如,如果我想显示"名称和符号"?

我们的想法是将名称+符号放在选择(下拉列表)列表中,当用户更改选择时,下拉列表旁边的文本字段会自动更改并显示正确的market_cap_usd值。

我能够继续前进并解析一些数据..

foreach ($json as $key => $value) { 
    foreach ($value as $valuta => $vrednost) { 
        echo "<p>$valuta | $vrednost</p>";
    }
}

我记得这不是最好的方法..我是否需要创建对象(如何?)所以我可以调用&#34; name&#34;价值直接或其他东西......

编辑:

我找到了解决我的问题的方法来访问值。我还能够将这些值放到select / dropdownmenu元素中。

这是我的版本:

        <form>
            <label for="sel1">Select list (select one):</label>
            <select class="selectpicker" data-live-search="true">           
            <?php

            $url = 'https://api.coinmarketcap.com/v1/ticker/';
            $content = file_get_contents($url);

            $json = json_decode($content, true);

            foreach ($json as $key => $value) {
                echo "<option>" . $json[$key]['name'] ." (". $json[$key]['symbol'] .")</option>";
            }

            ?>
            </select>
        </form>

也许有人会为自己的问题找到一些有用的东西&#34;问题&#34;。

我现在缺少的是下拉列表中的选择与旁边显示正确值之间的关系,基于该选择。

2 个答案:

答案 0 :(得分:0)

对于您的情况,您将需要此代码。我更改了变量名称以便更自我解释。

$url = 'https://api.coinmarketcap.com/v1/ticker/';
$content = file_get_contents($url);
$decodedData = json_decode($content, true);

foreach ($decodedData as $currency) {
    echo "<option value='" . $currency["id"] . "'>" . $currency["name"] ." (". $currency["symbol"] .")</option>";
}

json_decode的作用是将JSON字符串转换为PHP中的多维数组。然后,您可以使用foreach迭代它。

答案 1 :(得分:0)

嘿,请使用下面的代码。

import React, { Component, Fragment, useState } from "react";
import ReactDOM from "react-dom";
import { Navbar, Nav, NavDropdown } from "react-bootstrap";

const Header = props => {
  const [show, setShow] = useState(false);
  return (
    <Navbar>
      <NavDropdown
        title="Dropdown Menu"
        show={show}
        onMouseEnter={() => setShow(true)}
        onMouseLeave={() => setShow(false)}
      >
        <NavDropdown.Item href="#action/3.1">Option 1</NavDropdown.Item>
        <NavDropdown.Item href="#action/3.1">Option 2</NavDropdown.Item>
      </NavDropdown>
    </Navbar>
  );
};

function App() {
  return <Header />;
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);