Я пытаюсь создать запрос MySQL, который добавляет элементы в базу данных.Элементы хранятся внутри объекта, отформатированного как:
object(PhealResult)#7 (5) {
["request_time"]=>
string(19) "2011-08-04 14:14:37"
["request_time_unixtime"]=>
int(1312467277)
["cached_until"]=>
string(19) "2011-08-04 20:14:37"
["cached_until_unixtime"]=>
int(1312488877)
["_element:private"]=>
object(PhealElement)#12 (3) {
["_name"]=>
string(6) "result"
["_value"]=>
object(PhealContainer)#11 (1) {
["_container:private"]=>
array(1) {
["assets"]=>
object(PhealRowSet)#14 (3) {
[0]=>
object(PhealRowSetRow)#19 (6) {
["itemID"]=>
string(13) "1003152969505"
["locationID"]=>
string(8) "30000157"
["typeID"]=>
string(5) "11489"
["quantity"]=>
string(1) "1"
["flag"]=>
string(1) "0"
["singleton"]=>
string(1) "1"
}
[1]=>
object(PhealRowSetRow)#18 (7) {
["itemID"]=>
string(9) "290900396"
["locationID"]=>
string(8) "66002198"
["typeID"]=>
string(2) "27"
["quantity"]=>
string(1) "1"
["flag"]=>
string(2) "71"
["singleton"]=>
string(1) "1"
["contents"]=>
object(PhealRowSet)#24 (15) {
[0]=>
object(PhealRowSetRow)#29 (5) {
["itemID"]=>
string(13) "1003305129036"
["typeID"]=>
string(4) "2183"
["quantity"]=>
string(1) "4"
["flag"]=>
string(3) "117"
["singleton"]=>
string(1) "0"
}
**cropped**
}
}
**cropped**
}
}
}
}
Обратите особое внимание на то, как работает вложение.Набор строк верхнего уровня называется «активами», но тогда каждый элемент может иметь «содержимое».Каждый элемент в этом также может иметь список «содержимого».Существует предел того, насколько далеко он может пройти с точки зрения EVE, но предел неизвестен, и код должен предполагать, что реального ограничения нет.
Я немного поигрался с одним из фрагментов кода, расположенных наhttp://php.net/manual/en/language.types.array.php, который, как представляется, на данный момент не работает.
function array_value_recursive($key, array $arr){
$val = null;
array_walk_recursive($arr, function($v, $k) use($key, &$val){
$val = $k == $key ? $v : (!is_null($val) ? $val : false);
});
return $val;
}
Кажется, я не могу понять, как работать с объектом / массивом, учитывая, что я не знаю, насколько глубоко он заходит,Как я знаю, как далеко я нахожусь и как я могу получить доступ к данным, содержащимся, когда я глубоко в объекте / массиве.Я заранее благодарю вас за ваше время и помощь.
Приведенный ниже код - это код, который я использовал до того, как узнал, что может быть несколько бесконечное «вложенное» содержимое.Я включил этот код, чтобы вы могли видеть, что именно я пытаюсь выполнить.
<code>try {
$corpPheal = new Pheal($fullUserID, $fullAPIKey, "corp");
$corpAssetList = $corpPheal->AssetList(array('characterID'=>$fullCharID));
echo "<pre>";
var_dump($corpAssetList);
echo "
";} catch (PhealException $ e) {echo 'error:'. $ E-> code. 'Meesage:'. $ e-> getMessage ();} $ numOfAssetList = count ($ corpAssetList-> assets); для ($ i = 0; $ i <= ($ numOfAssetList -1); $ i ++) {$ numOfAssetContents = count ($ corpAssetList-> assets [$ i] -> contents); echo $ numOfAssetContents. "
\ n"; if ($ numOfAssetContents> 0) {$ count = 0; для ($ j = 0; $ j <=($ numOfAssetContents - 1); $ j ++) {echo "i = $ i, j = $ j <br>\ n"; $ count ++; foreach ($ corpAssetList-> assets [$ i] -> contents [$ j]как $ key => $ value) {switch ($ key) {case "itemID": $ qry = "INSERT INTO eve_asset_list (` itemID`, `typeID`,` amount`, `flag`,` singleton`) VALUES ('$ value', '"; break; регистр" typeID ": $ qry = $ qry. $ value."', '"; break; case" количество ": $ количество = $ value; $ qry = $ qry. $value. "','"; break; case "flag": $ qry = $ qry. $ value. "','"; break; case "singleton": $ qry = $ qry. $ value. "') ONDUPLICATE KEY UPDATE количество =$ Количество ";перерыв;}} $ result = mysql_query ($ qry);include "./include/mysqlError.inc.php";}} else {foreach ($ corpAssetList-> assets [$ i] as $ key => $ value) {switch ($ key) {case "itemID": $ qry = "INSERT INTO eve_asset_list (` itemID`, `typeID`, `amount`,` flag`, `singleton`) VALUES ('$ value', '"; break; case "typeID": $ qry = $ qry. $ value. "', '"; break; case "количество": $ amount = $ value; $ qry = $ qry. $ value." ',' "; break; case" flag ": $ qry = $ qry. $ value." ',' "; break; case" singleton": $ qry = $ qry. $ value." ') ON DUPLICATE KEY UPDATE количество = $ количество ";перерыв;}
}
}
}