例如我有这个操作:
foreach ($data as $item)
{
$arr[] = array(
'subjcode' => $item->subjCode,
'subjdesc' => $item->subjDesc,
'lab' => $item->lab,
'lec' => $item->lec,
'units' => $item->units,
);
}
我如何使用这样的foreach在一个表的行中显示其中的5个(这段代码错了,但这是我想要做的。应该更改什么?):
foreach($arr as $val)
{
echo '<tr>';
echo '<td>'.$val->subjcode.'</td>';
echo '<td>'.$val->subjdesc.'</td>';
echo '<td>'.$val->lab.'</td>';
echo '<td>'.$val->lec.'</td>';
echo '<td>'.$val->units.'</td>';
echo '</tr>';
}
答案 0 :(得分:1)
如果您只想显示5个元素的subjCode,那么您需要这样做:
echo '<tr>';
foreach ($arr as $val)
{
echo '<td>'.$val['subjCode'].'</td>';
}
echo '</tr>';
这将显示tr
元素,然后在td
每个subjCode中显示,然后关闭tr
。
请注意,虽然在数组中指定变量时使用的是对象,但该变量被设置为数组的元素而不是对象。
如果我们假设$ item-&gt; subjCode为“Hello”,那么您在$arr
中所做的是:
$arr['subjcode'] = 'Hello';
如果要在数组中使用对象,则需要将作业更改为:
foreach ($data as $item)
{
$new_item = new stdClass();
$new_item->subjCode = $item->subjCode;
$new_item->subjDesc = $item->subjDesc;
$new_item->lab = $item->lab;
$new_item->lec = $item->lec;
$new_item->units = $item->units;
$arr[] = $new_item;
}
或
foreach ($data as $item)
{
$new_item = array(
'subjcode' => $item->subjCode,
'subjdesc' => $item->subjDesc,
'lab' => $item->lab,
'lec' => $item->lec,
'units' => $item->units,
);
$arr[] = (object) $new_item;
}
$arr[] =
}
或者如果你的$ item元素不是很大并且你不介意存储它,你只需使用它:
foreach ($data as $item)
{
$arr[] = $item;
}
但是又一次,上面的目的是什么,因为你已经有$data
变量中的数据......
答案 1 :(得分:0)
您已将对象重建为数组。所以使用:
foreach($arr as $val)
{
echo '<tr>';
echo '<td>' . $val['subjCode'] . '</td>';
...
echo '</tr>';
}
答案 2 :(得分:0)
echo '<td>'.$val['subjcode'].'</td>';
答案 3 :(得分:0)
如果你想像那样回应:
foreach ($data as $item)
{
$tempArray = array(
'subjcode' => $item->subjCode,
'subjdesc' => $item->subjDesc,
'lab' => $item->lab,
'lec' => $item->lec,
'units' => $item->units,
);
$arr[] = (object)$tempArray;
}
然后你的回声应该有效;
你想看看here
答案 4 :(得分:0)
你可以试试这个。
$val = (object)$arr
参考:http://www.richardcastera.com/blog/php-convert-array-to-object-with-stdclass