我需要有关数组对象的帮助

时间:2012-10-04 13:51:58

标签: php

例如我有这个操作:

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

5 个答案:

答案 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