كيفية استخراج بيانات JSON من المصفوفات المتداخلة في PHP؟

-1

لذلك أنا أسحب API من Coinmarketcap.com والإصدار الجديد له بنية بيانات مختلفة حقًا.

كما أنني مبتدئ في PHP وواجهات برمجة التطبيقات حقًا لا أفهم كيفية سحب بيانات المصفوفة المتداخلة من استدعاء api.

إليك بيانات واجهة برمجة التطبيقات: https://api.coinmarketcap.com/v2/ticker/1/ أو https://api.coinmarketcap.com/v2/ticker/1/؟structure=array

    {
    "data": [
        {
            "id": 1, 
            "name": "Bitcoin", 
            "symbol": "BTC", 
            "website_slug": "bitcoin", 
            "rank": 1, 
            "circulating_supply": 17148000.0, 
            "total_supply": 17148000.0, 
            "max_supply": 21000000.0, 
            "quotes": {
                "USD": {
                    "price": 6233.51, 
                    "volume_24h": 3674820000.0, 
                    "market_cap": 106892229480.0, 
                    "percent_change_1h": -0.11, 
                    "percent_change_24h": -0.46, 
                    "percent_change_7d": -6.25
                }
            }, 
            "last_updated": 1531544203
        }
    ], 
    "metadata": {
        "timestamp": 1531543852, 
        "error": null
    }
}

ما قررت فعله هو سحب الجسم json_dcode ثم ننتقل من خلاله إلى إنشاء مصفوفة جديدة في كل مرة حتى أتمكن من الحصول على بيانات المصفوفة التي أريدها ، والتي كانت في هذه الحالة $a() . نجح ذلك ، لكنني اعتقدت أنه قد تكون هناك طريقة أكثر كفاءة للقيام بذلك حيث أعتقد أن الحلقات for-loops ستسبب مشاكل في الأداء. هل هناك طريقة أفضل للقيام بذلك؟ شكرا لكم مقدما. دان

هذا هو رمز الاختبار الخاص بي ، الرجاء إظهار طريقة أفضل:

 <?php
$BitcoinContents = file_get_contents("https://api.coinmarketcap.com/v2/ticker/1/?structure=array");
$BTCContents = json_decode($BitcoinContents, true);
echo " 0 <br>";
print_r($BTCContents);
echo "<br>";

foreach($BTCContents as $array){
  echo "<br>--------<br>";
  print_r($array);
  foreach($array as $arr){
    echo "<br>--------<br>";
    print_r($arr);
    foreach($arr as $ar){
      echo "<br>--------<br>";
      print_r($ar);
      foreach($ar as $a){
        echo "<br>--------<br>";
        print_r($a);
        foreach($a as $key => $val){
          echo "<br>=========<br>";
          echo "$key: $val | ";
        }
      }
    }
  }
}


echo "<br>=========<br>"; 
echo "<br>--------<br>";
      print_r($a); 
echo "<br>--------<br>";
echo "<br>=========<br>"; 
echo "<br>".$a['price']."<br>";

echo "<br>--------<br>";
echo "<br>=========<br>"; 

؟>

1 إجابة

0

إذا كنت تحاول الوصول إلى صفيف معين في صفيف متداخل ، فقط قم بما يلي:

$data = $BTCContents['data'][0]['quotes']['USD'];

لقد استخدمت هنا فهرس المصفوفات للوصول إلى مصفوفة معينة وهي USD. فهرس الصفيف = اسم الصفيف الذي يمكن أن يكون كلمة أو رقم.

ثم يمكنك القيام بحلقة foreach للوصول إلى العنصر بداخلها أو يمكنك الوصول إليها مباشرة عن طريق القيام بما يلي:

$price = $data['price'];
:مؤلف
فوق
قائمة طعام