ここは初めてなので、これを十分に説明できれば幸いです...
PHP/Smarty、私は、一般的なページまたはそのページの個々の場所に関連付けられたメモの箇条書きリストを表示するページのセクションに取り組んでいます。メモがないところもあります。何かのようなもの:
全般的
- 注1
ニューヨーク
- 注2
- 注3
ボストン
- 注4
作業中の .tpl に 2 つの配列が割り当てられており、UI クラスによって値が取り込まれています: $places と $notes
$placesには、place_id ごとに一意の場所オブジェクトが含まれます
$notesには一意に識別されたメモ オブジェクトが含まれ、それぞれが属性の 1 つとして place_id を持つ場合と持たない場合があります。
これが私が考えていることです:
{if (**ANY NOTES EXIST IN $notes WITH NO place_id**)}
<ul id="list-general">
<h4>General</h4>
{foreach from=**[NOTES WITH NO place_id]** item=note}
<li id="note-{$note->get_id()}">$note->get_text()</li>
{/foreach}
</ul>
{else}
<ul id="list-general" class="hide">
<h4>General</h4>
</ul>
{/if}
{foreach from=$places item=place}
{assign var=curr_place_id value=$place->get_id()}
{if (**ANY NOTES EXIST IN $notes WHERE place_id == $curr_place_id**)}
<ul id="list-{$curr_place_id}">
<h4>{$place->get_name()}</h4>
{foreach from=**[NOTES WHERE place_id == $curr_place_id]** item=note}
<li id="note-{$note->get_id()}">$note->get_text()</li>
{/foreach}
</ul>
{else}
<ul id="list-{$curr_place_id}" class="hide">
<h4>{$place->get_name()}</h4>
</ul>
{/if}
{/foreach}
私はこれらすべてにかなり慣れていないので、 CAPSの項目に苦労しています...だから、私の質問は次のとおりです: 2 つの異なる配列内のオブジェクトの属性を評価する最良の方法は何ですか?必要なメモだけを含む一時配列を構築する可能性があります。
(ご参考までに、隠しノードを作成しているので、javascript 経由でそれらにアクセスでき、順序を気にする必要はありません)