【发布时间】:2011-12-12 23:36:14
【问题描述】:
我有这个数据 cennik.json 文件:
{
"waluta": "PLN",
"vat": 1.23,
"00101": {
"cena": 340,
"powiazanyZ": "00139"
},
"00102": {
"cena": 325.33,
"powiazanyZ": "00140"
},
"00103": {
"cena": 306.67,
"powiazanyZ": "00141"
},
"00104": {
"cena": 289.33,
"powiazanyZ": "00142"
},
"00105": {
"cena": 276,
"powiazanyZ": "00143"
},
"00106": {
"cena": 258.67,
"powiazanyZ": "00144"
},
"00107": {
"cena": 240,
"powiazanyZ": "00145"
},
"00108": {
"cena": 222.67,
"powiazanyZ": "00146"
},
"00109": {
"cena": 205.33,
"powiazanyZ": "00147"
},
"00110": {
"cena": 189.33,
"powiazanyZ": "00148"
},
"00120": {
"cena": 413.33,
"powiazanyZ": "00150"
},
"00121": {
"cena": 73.33,
"powiazanyZ": "00000"
},
"00122": {
"cena": 153.33,
"powiazanyZ": "00000"
},
"00123": {
"cena": 153.33,
"powiazanyZ": "00000"
},
"00138": {
"cena": 1937,
"powiazanyZ": "00152"
},
"00139": {
"cena": 366.82,
"powiazanyZ": "00101"
},
"00140": {
"cena": 325.33,
"powiazanyZ": "00102"
},
"00141": {
"cena": 306.67,
"powiazanyZ": "00103"
},
"00142": {
"cena": 289.33,
"powiazanyZ": "001041"
},
"00143": {
"cena": 276,
"powiazanyZ": "00105"
},
"00144": {
"cena": 258.67,
"powiazanyZ": "00106"
},
"00145": {
"cena": 240,
"powiazanyZ": "00107"
},
"00146": {
"cena": 222.67,
"powiazanyZ": "00108"
},
"00147": {
"cena": 205.33,
"powiazanyZ": "00109"
},
"00148": {
"cena": 189.33,
"powiazanyZ": "00110"
},
"00150": {
"cena": 413.33,
"powiazanyZ": "00120"
},
"00152": {
"cena": 1997.33,
"powiazanyZ": "00138"
}
}
这来自我的 php 文件:
$vat = 0.00;
$waluta = '';
$kod00101 = 0.00;
$kod00102 = 0.00;
...
$kod00152 = 0.00;
$cennik_plik = file_get_contents("cennik.json");
$jsonIterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator(json_decode($cennik_plik, TRUE)),
RecursiveIteratorIterator::SELF_FIRST);
foreach ($jsonIterator as $key => $val) {
if(is_array($val)) {
$v = ${'kod'.$key};
if('$key' == $v){
$v = number_format((float)$val[cena],2,'.','');
}
} else {
if('$key' == 'waluta') {$waluta = $val;};
if('$key' == 'vat') {$vat = number_format((float)$val,2,'.','');};
}
}
我正在尝试这个,我得到以下错误:
致命错误:在 C:\Documents and Settings\user\Desktop\Lighty2Go\HTDOCS\ogr\index.php 中带有消息“传递的变量不是数组或对象,而是使用空数组”的未捕获异常“InvalidArgumentException”: 50
堆栈跟踪:
#0 C:\Documents and Settings\user\Desktop\Lighty2Go\HTDOCS\ogr\index.php(50): ArrayIterator->__construct('???{?? "walu...')
#1 {main} 在第 50 行的 C:\Documents and Settings\user\Desktop\Lighty2Go\HTDOCS\ogr\index.php 中抛出
有什么建议吗?
我尝试使用这些资源自己解决它,但没有:
【问题讨论】:
-
你传入的不是 JSON 数组,所以我不知道你为什么认为
RecursiveArrayIterator会起作用。 -
我已经在codepad.org/coNivEDv 上尝试过这段代码,它可以工作,所以我不知道我应该在哪里查找错误
-
我意识到设置 xdebug 很困难,但是在您在这里提问之前需要进行一些调试。例如,在这种情况下,您需要逐步检查这些值。如果那是
echo或var_dump,那就这样吧。但是例如你甚至都懒得去检查json_decode()给了你什么。 -
你是对的。老实说,我不知道如何以及在哪里设置这些东西,我应该从哪里开始寻找错误。我确信我是一些容易修复的错误,因为我是 php 真正的新手,我试图问一个快速的问题。现在,在马里奥的帮助下,我开始明白一些事情了。