-1

例如我有这个操作:

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>';
}
4

5 回答 5

1

如果您只想显示 5 个元素的 subjCode,那么您需要这样做:

echo '<tr>';
foreach ($arr as $val)
{
    echo '<td>'.$val['subjCode'].'</td>';
}
echo '</tr>';

这将显示一个tr元素,然后在td每个 subjCode 中,然后关闭tr.

请注意,尽管在数组中分配变量时使用的是对象,但该变量被设置为数组的元素而不是对象。

如果我们假设 $item->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变量中拥有数据...

于 2012-10-04T14:00:34.213 回答
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;
}

那么你的回声应该可以工作;

你想看看这里

于 2012-10-04T13:56:22.367 回答
0

你可以试试这个。

$val = (object)$arr

参考:http ://www.richardcastera.com/blog/php-convert-array-to-object-with-stdclass

于 2012-10-04T14:00:58.537 回答
0

echo '<td>'.$val['subjcode'].'</td>';

于 2012-10-04T13:54:49.757 回答
0

您已将对象重建为数组。所以使用:

foreach($arr as $val)
{
   echo '<tr>';
   echo '<td>' . $val['subjCode'] . '</td>';
   ...
   echo '</tr>';
}
于 2012-10-04T13:54:35.973 回答