【发布时间】:2013-12-14 12:16:09
【问题描述】:
我有一个多维数组,我正在尝试使用 foreach 从中提取值。
它是检索到的 JSON 格式,所以我使用json_decode 将其转换为关联数组。
该数组包含各种产品的定价信息。我正在努力解决的问题是它包含每个产品的多个嵌套数组。
因此,我不确定如何将其集成到foreach。
数组 $arr:
Array
(
[result] => success
[totalresults] => 3
[products] => Array
(
[product] => Array
(
[0] => Array
(
[pid] => 2
[gid] => 2
[type] => other
[name] => Shared Hosting
[description] => Shared Cloud
[module] => custom server
[paytype] => onetime
[pricing] => Array
(
[GBP] => Array
(
[prefix] => £
[suffix] => GBP
[msetupfee] => 0.00
[qsetupfee] => 0.00
[ssetupfee] => 0.00
[asetupfee] => 0.00
[bsetupfee] => 0.00
[tsetupfee] => 0.00
[monthly] => 0.00
[quarterly] => -1.00
[semiannually] => -1.00
[annually] => -1.00
[biennially] => -1.00
[triennially] => -1.00
)
)
[customfields] => Array
(
[customfield] => Array
(
)
)
[configoptions] => Array
(
[configoption] => Array
(
[0] => Array
(
[id] => 2
[name] => Years
[type] => 2
[options] => Array
(
[option] => Array
(
[0] => Array
(
[id] => 2
[name] => 1 Year
[recurring] =>
[pricing] => Array
(
[GBP] => Array
(
[msetupfee] => 0.00
[qsetupfee] => 0.00
[ssetupfee] => 0.00
[asetupfee] => 0.00
[bsetupfee] => 0.00
[tsetupfee] => 0.00
[monthly] => 69.00
[quarterly] => 0.00
[semiannually] => 0.00
[annually] => 0.00
[biennially] => 0.00
[triennially] => 0.00
)
)
)
[1] => Array
(
[id] => 5
[name] => 2 Years
[recurring] =>
[pricing] => Array
(
[GBP] => Array
(
[msetupfee] => 0.00
[qsetupfee] => 0.00
[ssetupfee] => 0.00
[asetupfee] => 0.00
[bsetupfee] => 0.00
[tsetupfee] => 0.00
[monthly] => 138.00
[quarterly] => 0.00
[semiannually] => 0.00
[annually] => 0.00
[biennially] => 0.00
[triennially] => 0.00
)
)
)
[2] => Array
(
[id] => 8
[name] => 3 Years
[recurring] =>
[pricing] => Array
(
[GBP] => Array
(
[msetupfee] => 0.00
[qsetupfee] => 0.00
[ssetupfee] => 0.00
[asetupfee] => 0.00
[bsetupfee] => 0.00
[tsetupfee] => 0.00
[monthly] => 276.00
[quarterly] => 0.00
[semiannually] => 0.00
[annually] => 0.00
[biennially] => 0.00
[triennially] => 0.00
)
)
)
[3] => Array
(
[id] => 11
[name] => 4 Years
[recurring] =>
[pricing] => Array
(
[GBP] => Array
(
[msetupfee] => 0.00
[qsetupfee] => 0.00
[ssetupfee] => 0.00
[asetupfee] => 0.00
[bsetupfee] => 0.00
[tsetupfee] => 0.00
[monthly] => 552.00
[quarterly] => 0.00
[semiannually] => 0.00
[annually] => 0.00
[biennially] => 0.00
[triennially] => 0.00
)
)
)
[4] => Array
(
[id] => 14
[name] => 5 Years
[recurring] =>
[pricing] => Array
(
[GBP] => Array
(
[msetupfee] => 0.00
[qsetupfee] => 0.00
[ssetupfee] => 0.00
[asetupfee] => 0.00
[bsetupfee] => 0.00
[tsetupfee] => 0.00
[monthly] => 1104.00
[quarterly] => 0.00
[semiannually] => 0.00
[annually] => 0.00
[biennially] => 0.00
[triennially] => 0.00
)
)
)
)
)
)
)
)
)
以上部分从[product] 重复每个产品 ID ([pid]) - 我无法将整个数组放入帖子中,所以这里有一个链接 - http://pastebin.com/0qgh5scG
我想要实现的是将数组中每个产品 ID [pid] 的名称描述和 EACH Monthly* 价格提取到它自己的数组中,该数组变量名称是关联的 [pid]。
*(月价其实是年价,只是模块将数据存入数据库的一种奇葩方式)
我已经尝试过foreach:
$arr = json_decode($jsondata, true); # Decode JSON String
foreach ($arr['products']['product'] as $num) {
$pid = $num['pid'];
$yearlycosts = $arr['configoptions']['configoption']['0']['options']['option'][0]['pricing']['GBP']['monthly'];
echo $pid;
echo $yearlycosts;
}
产品 ID,检索正常,但是我到底如何为每个产品 ID [pid] 提取多个 [name] 和相关的多个 [monthly] 值?
我是否需要在现有的foreach 中包含foreach?
最终我想将这些值传递给新数组,每个数组都以其对应的[pid] 值命名。但我认为这对我来说是一个单独的问题/挑战。
我希望我在上面说得通。我是数组的新手,在搜索了很多示例时,没有发现任何具有像上述那样复杂的数组,或者具有唯一命名的部分。
【问题讨论】:
-
api 的数组结构没有多大意义。他们的文档有解释吗?
-
我知道!这是WHMCS 的 API(计费“解决方案”)。老实说,他们的文档在这样的事情上并不是很好。支持还有很多不足之处。
标签: php arrays multidimensional-array foreach