【发布时间】:2012-03-05 11:29:29
【问题描述】:
我有以下数组结构,并且我使用 for each 循环成功地循环了 [LoyaltyHistory] 部分:
Array
(
[0] => Array
(
[LoyaltyHistory] => Array
(
[id] => 5
[user_id] => 32
[points] => 4
[date] => 2012-02-07
[total] => 146
)
[User] => Array
(
)
)
[1] => Array
(
[LoyaltyHistory] => Array
(
[id] => 6
[user_id] => 32
[points] => -6
[date] => 2012-02-07
[total] => 140
)
[User] => Array
(
)
)
[2] => Array
(
[LoyaltyHistory] => Array
(
[id] => 7
[user_id] => 32
[points] => -5
[date] => 2012-02-07
[total] => 135
)
[User] => Array
(
)
)
[3] => Array
(
[LoyaltyHistory] => Array
(
[id] => 8
[user_id] => 32
[points] => 15
[date] => 2012-02-07
[total] => 150
)
[User] => Array
(
)
)
[4] => Array
(
[LoyaltyHistory] => Array
(
[id] => 9
[user_id] => 32
[points] => 5
[date] => 2012-02-10
[total] => 155
)
[User] => Array
(
)
)
[5] => Array
(
[LoyaltyHistory] => Array
(
[id] => 10
[user_id] => 32
[points] => 155
[date] => 2012-03-04
[total] => 305
)
[User] => Array
(
)
)
[6] => Array
(
[LoyaltyHistory] => Array
(
[id] => 11
[user_id] => 32
[points] => -5
[date] => 2012-03-04
[total] => 300
)
[User] => Array
(
)
)
[7] => Array
(
[LoyaltyHistory] => Array
(
[id] => 12
[user_id] => 32
[points] => 5
[date] => 2012-03-05
[total] => 305
)
[User] => Array
(
)
)
)
for each 循环的结构如下:
<?php foreach ($history as $hist)
{
if($hist['LoyaltyHistory']['points'] > 0) $hist['LoyaltyHistory']['points'] = '+'.$hist['LoyaltyHistory']['points'];?>
<tr>
<td><?php echo $hist['LoyaltyHistory']['date']; ?></td>
<td><?php echo $hist['LoyaltyHistory']['points']; ?></td>
<td><?php echo $hist['LoyaltyHistory']['total']; ?></td>
</tr>
<?php } ?>
for each 循环从数组中输出正确的元素,但它会导致以下警告:'Warning (2): Invalid argument supplied for foreach()',我不知道为什么。
【问题讨论】:
-
可能是因为您使用
$history作为循环变量,但在循环内调用$h? -
很好,忘记将引用从 $h 更新为 $hist,将对原始帖子进行修改。不幸的是,这不是导致问题的原因。
-
我用你的数据试过你的例子,它工作正常。尝试定义您在哪个周期后收到此警告