-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

これを試すことができます。

$val = (object)$arr

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

于 2012-10-04T14:00:58.537 に答える
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

オブジェクトを配列に再構築しました。だから使用:

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

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

于 2012-10-04T13:54:49.757 に答える