我有一個名爲「觀察」的數組(從Python應用程序發佈)。它看起來像這樣:PHP foreach不像預期的那樣行爲
Array
(
[0] => Array
(
['remote_id'] => 1
['dimension_id'] => 1
['metric'] => 1
)
[1] => Array
(
['remote_id'] => 1
['dimension'] => 2
['metric'] => 2
)
[2] => Array
(
['remote_id'] => 1
['dimension_id'] => 3
['metric'] => 3
)
(etc)
我想通過remote_id,dimension_id和度量的所有實例進行迭代,並將其寫入到數據庫。但我不能訪問它們 - 這是我的PHP:
foreach ($_POST["observations"] as $observation) {
echo "Let's try and access the whole array... \n";
print_r ($observation);
echo "But what about the sub elements? \n";
print_r ($observation[0]);
print_r ($observation['dimension_id']);
}
這將返回:
Let's try and access the whole array...
Array
(
['remote_id'] => 1
['dimension_id'] => 1
['metric'] => 1
)
But what about the sub elements?
Let's try and access the whole array...
Array
(
['remote_id'] => 1
['dimension'] => 2
['metric'] => 2
)
But what about the sub elements?
(etc)
所以我的print_r($觀察[0])和print_r的($觀察[ 'dimension_id'])都無法訪問相應的子元素並返回空。我在這裏錯過了什麼?
編輯:關於我的(可能畸形的)POST的幾個問題。這樣做在Python像這樣:
data = urllib.urlencode([
("observations[0]['remote_id']", 1),
("observations[0]['dimension_id']", 1),
("observations[0]['metric']",metric1),
("observations[1]['remote_id']", 1),
("observations[1]['dimension']", 2),
("observations[1]['metric']", metric2),
("observations[2]['remote_id']", 1),
("observations[2]['dimension_id']", 3),
("observations[2]['metric']",metric3),
("observations[3]['remote_id']", 1),
("observations[3]['dimension_id']", 4),
("observations[3]['metric']",metric4),
("observations[4]['remote_id']", 1),
("observations[4]['dimension_id']", 5),
("observations[4]['metric']",metric5),
])
response = urllib2.urlopen(url=url, data=data)
'$ observation'中沒有索引0。索引'dimension_id'存在並且還有'dimension' - 這是正確的? – 2014-09-13 13:59:11
'$ observation ['dimension_id']'應該可以工作。啓用錯誤報告,你會注意到錯誤的鍵 – kero 2014-09-13 13:59:14
查看'var_dump(array_keys($ observation))',然後看看[this](http://3v4l.org/D3eRR)。好像你的POST的鍵有多餘的引號,你需要使用'$ observation [「'metric'」]'而不是通常的'$ observation ['metric']''。 (當然,正確的解決方案是修復你的POSTing代碼*而不是*首先添加這些額外的引號。) – DCoder 2014-09-13 13:59:35