私はテーブルを持っています:
| header_row | cell_usr_a | cell_usr_b | cell_fixed_a | cell_fixed_b |
| second_row |...
| usr_row_a |...
| usr_row_b |...
| usr_row_c |...
この例の最初の2つの列(cell_usr *)は、動的オブジェクト(xエントリの配列)から取得されます。それらの0または多くが存在する可能性があります。最後の2列は常にそこにあります。
最初の2行は常にそこにあります(要素名およびその他の一般的なプロパティ)。usr_row *は、動的オブジェクトの要素に依存します。配列の要素の1つに対応するプロパティが設定されている場合は、行を表示します。それ以外の場合は表示しません。
行ごとに繰り返すことなく、オブジェクトを効率的に繰り返すにはどうすればよいですか?
現在私はします
foreach ($array as $element)
行ごとに、$arrayのサイズに従って追加します。次に、最初にすべての$要素をもう一度繰り返して、usr_rowプロパティが設定されているかどうかを確認し、設定されている場合は、行を作成する必要があります...
これを効率的に(そしておそらくエレガントに)行う方法について何かアイデアはありますか?ちなみに必ずしもテーブルである必要はありません。
編集:私の質問を説明するのに役立ついくつかのコード$ packagesはオブジェクトであり、基本的には要素の数が不明な配列です
<table>
<tr><!-- header row -->
<td>Package name</td>
<?php foreach($packages as $pkg) {
echo '<td>'.$pkg->package_name . '</td>';
} ?>
<td>fixed value</td><!-- cell_fixed_a -->
<td>no value</td><!-- cell_fixed_b -->
</tr>
<tr><!-- second row -->
<td>Count</td>
<?php foreach($packages as $pkg) {
echo '<td>'.$pkg->count . '</td>';
} ?>
<td>fixed value</td><!-- cell_fixed_a -->
<td>fixed value</td><!-- cell_fixed_b -->
</tr>
<tr><!-- usr_row_a
HERE I ONLY NEED TO HAVE THIS ROW IF any one of $pkg has prop set
-->
<?php foreach($packages as $pkg) {
if ($pkg->prop) {
echo '<tr><td>Property name</td>';
echo '<td>'. $pkg->prop . '</td>';
}
</tr>
</table>