Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Обработка многомерного массива


Автор: Aleskert 6.5.2012, 00:59
Есть код, отлично работающий на JScript:
Код

for(var key in t1.vehicles){ 
    if(t1.vehicles[key].clanAbbrev == "TEST" || t1.vehicles[key].clanAbbrev == "TEST2")
    {
        name_player[l] = t1.vehicles[key].name;
        l++;

    }
};

Код исполняется в цикле и в переменную name_player вбиваются все имена, которые подходят под условия из массива t1.
Сам массив получается из JSON в следующем виде:
Код

{
  "mapName": "steppes",
  "playerID": 1243711,
  "playerVehicle": "france-AMX_50_120",
  "gameplayType": "ctf",
  "playerName": "Aleskert",
  "vehicles": {
    "126875962": {
      "vehicleType": "france:AMX_13_90",
      "isAlive": true,
      "name": "Verik_25rus",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875963": {
      "vehicleType": "ussr:IS-4",
      "isAlive": true,
      "name": "Svazz",
      "clanAbbrev": "BTR",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875964": {
      "vehicleType": "france:AMX_13_90",
      "isAlive": true,
      "name": "BITKOV123",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875965": {
      "vehicleType": "ussr:IS-4",
      "isAlive": true,
      "name": "lunizzz",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875966": {
      "vehicleType": "ussr:S-51",
      "isAlive": true,
      "name": "saschoook",
      "clanAbbrev": "_TTS_",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875967": {
      "vehicleType": "ussr:IS-4",
      "isAlive": true,
      "name": "glazov",
      "clanAbbrev": "BTR",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875968": {
      "vehicleType": "germany:JagdPzIV",
      "isAlive": true,
      "name": "1000Roentgen",
      "clanAbbrev": "T-T",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875969": {
      "vehicleType": "ussr:SU-152",
      "isAlive": true,
      "name": "briz018",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875970": {
      "vehicleType": "germany:VK2801",
      "isAlive": true,
      "name": "Musechka",
      "clanAbbrev": "NSTR",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875971": {
      "vehicleType": "ussr:KV-3",
      "isAlive": true,
      "name": "kloun0",
      "clanAbbrev": "",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875972": {
      "vehicleType": "germany:G_Panther",
      "isAlive": true,
      "name": "JORGE",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875973": {
      "vehicleType": "usa:M103",
      "isAlive": true,
      "name": "Kuvakei",
      "clanAbbrev": "",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875974": {
      "vehicleType": "ussr:IS-3",
      "isAlive": true,
      "name": "APELSIN010",
      "clanAbbrev": "SVM",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875975": {
      "vehicleType": "ussr:T-44",
      "isAlive": true,
      "name": "Das_gewitter_der_panzer",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875976": {
      "vehicleType": "ussr:IS",
      "isAlive": true,
      "name": "Kniqht",
      "clanAbbrev": "",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875977": {
      "vehicleType": "france:AMX_50_120",
      "isAlive": true,
      "name": "Aleskert",
      "clanAbbrev": "UATDT",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875978": {
      "vehicleType": "usa:M12",
      "isAlive": true,
      "name": "lstgn",
      "clanAbbrev": "",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875979": {
      "vehicleType": "ussr:IS-4",
      "isAlive": true,
      "name": "uzerby",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875980": {
      "vehicleType": "ussr:KV-5",
      "isAlive": true,
      "name": "elmasik",
      "clanAbbrev": "SVM",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875981": {
      "vehicleType": "usa:M5_Stuart",
      "isAlive": true,
      "name": "glosser13",
      "clanAbbrev": "",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875982": {
      "vehicleType": "germany:VK1602",
      "isAlive": true,
      "name": "kyrsant333",
      "clanAbbrev": "",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875983": {
      "vehicleType": "ussr:T-43",
      "isAlive": true,
      "name": "Mamlin3",
      "clanAbbrev": "",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875984": {
      "vehicleType": "germany:Lowe",
      "isAlive": true,
      "name": "rangar666",
      "clanAbbrev": "_UK_",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875985": {
      "vehicleType": "china:Ch01_Type59",
      "isAlive": true,
      "name": "niochem111",
      "clanAbbrev": "",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875986": {
      "vehicleType": "ussr:T-34-85",
      "isAlive": true,
      "name": "JokerSmoker",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875987": {
      "vehicleType": "germany:G_Panther",
      "isAlive": true,
      "name": "GL_Andrey",
      "clanAbbrev": "",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875988": {
      "vehicleType": "ussr:T-34-85",
      "isAlive": true,
      "name": "1945vovan",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875989": {
      "vehicleType": "ussr:SU-100",
      "isAlive": true,
      "name": "VLADIMIR290",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875990": {
      "vehicleType": "usa:T32",
      "isAlive": true,
      "name": "chelovek74",
      "clanAbbrev": "74-RU",
      "team": 2,
      "events": {
        
      },
      "isTeamKiller": false
    },
    "126875991": {
      "vehicleType": "ussr:KV-5",
      "isAlive": true,
      "name": "vgsch9",
      "clanAbbrev": "",
      "team": 1,
      "events": {
        
      },
      "isTeamKiller": false
    }
  },
  "mapDisplayName": "\u0421\u0442\u0435\u043f\u0438",
  "dateTime": "25.04.2012 00:39:13"
}

Вопрос. Как средствами PHP выбрать все name если clanAbbrev == "TEST"
На входе имеем 
Код

$dat = json_decode($dat);

Автор: ksnk 6.5.2012, 10:25
Код

$t1 = json_decode($dat);

foreach ($t1['vehicles'] as $key=>$val){ 
    if($val['clanAbbrev'] == "TEST" || $val['clanAbbrev'] == "TEST2")
    {
        $name_player[l] = $val['name'];
    }
};


?

Автор: Aleskert 6.5.2012, 11:22
Решил. Моей ошибкой было использование массивов, в то время, когда переменная $dat - это объект. В итоге, доступ был реализован вот так:
Код

            foreach($dat->vehicles as $key => $index){
                echo $index->clanAbbrev;echo "<br>";
            };

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)