Мне нужно получить конкретное значение только из ключа, например:

Мне нужно получить значение "odd": "6.25" из

"name": "Team To Score Last"->"value": "No goal" 

И ODD

Это мой json

"response": [
    {
    "league": {},
    "fixture": {},
    "update": "2020-05-15T09:49:32+00:00",
    "bookmakers": [
        {
        "id": 6,
        "name": "Bwin",
        "bets": [
            {}, {}, {}, {}, {}, {}, {},
            {}, {}, {}, {},
            {    
                "id": 15,
                "name": "Team To Score Last",
                "values": [
                        {
                            "value": "No goal",
                            "odd": "6.25"
                        }

Я пробовал с

$odds =json_decode($responseodds, true);
$value=$odds['response'][0]['bookmakers'][0]['bets'][0]['name'];

К сожалению, я получаю только значение Команда забьет последней

-3
Fabio Krueger 4 Фев 2022 в 14:00
1
Как я могу прочитать из данного JSON, ['bets'][0]['name'] не получит "Команда забьет последней", потому что первый объект bets пуст.
 – 
Syscall
4 Фев 2022 в 14:04
Украсьте свой json следующим образом: jsonformatter.curiousconcept.com. Будет легче увидеть, когда что-то является массивом или объект.
 – 
Robert
4 Фев 2022 в 14:04
Уместно ли, что вы не публиковали информацию в массивах bets[0], bets[1], bets[2]......, но размещали в массиве bets[11]? ИЛИ Действительно ли все эти массивы выглядят как bets[11]? И поэтому вам действительно нужны данные только из bets[11] или ВСЕХ этих массивов
 – 
RiggsFolly
4 Фев 2022 в 14:14
Да правильно, мне нужно получить ставки [11], но проблема в том, что это значение, которое мне нужно, не всегда находится в одной и той же позиции... но в следующем массиве могут быть ставки [8]. по этой причине я прошу получить значение по имени Команда, которая забьет последней-> Команда, которая забьет последней->6.25
 – 
Fabio Krueger
4 Фев 2022 в 14:18
Но вы не показываете нам Name of Team ни в одном из этих элементов данных.
 – 
RiggsFolly
4 Фев 2022 в 14:20

2 ответа

Лучший ответ

Прокрутите массив ставок и найдите интересующую вас ставку name.

foreach ( $odds['response'][0]['bookmakers'][0]['bets'] as $bet){
    if ( $bet['name'] == "Team To Score Last") {
        // this is the one
        echo 'The odds were ' . $bet['values'][0]['odd'];
    }
}

Если вам нужны эти коэффициенты для всех букмекеров

foreach ( $odds['response'][0]['bookmakers'] as $bookie){

    foreach ( $bookie as $bet){
        if ( $bet['name'] == "Team To Score Last") {
            // this is the one
            echo 'The bookie ' . $bookie['name'] . 'has the odds ' . $bet['values'][0]['odd'];
        }
    }
}
2
RiggsFolly 4 Фев 2022 в 14:39
1
Спасибо теперь работает, но немного отредактируйте код с echo The odds were ' . $bet['odd']; на echo The odds were ' . $bet['values'][0]['odd'];
 – 
Fabio Krueger
4 Фев 2022 в 14:36
Ах да, хорошее место, я исправил
 – 
RiggsFolly
4 Фев 2022 в 14:39
Большое спасибо!
 – 
Fabio Krueger
4 Фев 2022 в 14:40
$json = '{
  "response": [
    {
      "league": {},
      "fixture": {},
      "update": "2020-05-15T09:49:32+00:00",
      "bookmakers": [
        {
          "id": 6,
          "name": "Bwin",
          "bets": [
            {},
            {},
            {},
            {},
            {},
            {},
            {},
            {},
            {},
            {},
            {},
            {
              "id": 15,
              "name": "Team To Score Last",
              "values": [
                {
                  "value": "No goal",
                  "odd": "6.25"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
';

$data = json_decode($json, true);
echo "<pre>";
var_dump($data);
echo "<pre>";

$bets = $data['response'][0]['bookmakers'][0]['bets'];

foreach ($bets as $item) {
    if (empty($item)) {
        continue;
    }

    $odd = $item['values'][0]['odd'];

    var_dump($item);
    var_dump($odd);
}

Я пробовал это, и у меня есть нечетное значение

-1
Kallard 4 Фев 2022 в 14:18