2009-06-04 9 views
1

私のコードでは2つのループが実行されていますが、配列の要素を2番目の配列のキーとして使いたいのですが、これはSmartyで行います。Smarty(PHP)で2番目の配列のキーとして配列を使用する

$dateAndUserForEdit.$key.edit_idは」(デシベルから引き出さ)整数

私は整数でharcode場合は正常に動作第二のループ、中にキーとしてその値を使用したいが含まれています

{foreach from=$historyOfRepair.9 key=key item=i} 

私がしようとしてきたものの一種のための擬似コードは次のとおりです。

{foreach from=$historyOfRepair.{$dateAndUserForEdit.$key.edit_id} key=key item=i} 

しかし、もちろん、これは動作しません!誰でも助けることができますか?

答えて

5

何か:私はアルヴォに同意するだろう

{assign var=edit_id value=$dateAndUserForEdit.$key.edit_id} 
{foreach from=$historyOfRepair.$edit_id key=key item=i} 
+0

私は同じ問題に遭遇しました。これが私が使用した解決策でした。 –

+0

おとぎ話ですが、それはGoogleで高く評価されました。私は余分な割り当てなしで別のソリューションを使用しました。回答を以下のように追加しました – Nanne

0

誰も をあなたにアドバイスを与えてはまだありません...しているので、私は唯一の私はいつもちょうどだから私はここに無知かもしれません(私自身のテンプレートシステムを作ったし、私のアドバイスは役に立たないとして、私はSmartyのを使用したことがない、ここでコメントしています)...

Smartyなしで配列を作成してSmartyに渡して表示できますか?個人的には、カスタムテンプレートエンジンコードを混乱させるのではなく、おそらく基本的なもの以外の何かのためにやることでしょう。 (現在はテストすることはできません)動作することがあり、次のような

0

。 idを一時変数に代入して、foreachループ内の置換として使用できるようにする必要があります。彼のサンプルコードでは、$ keyの値は$ historyOfRepair配列の現在の項目のキーに置き換えられることに注意してください。それ以外の場合は動作します(テスト済みです:)。

1

これはトリックが古いバージョンのために必要とされた場合、私は知らないが、あなたは(私は今、かなりの時間と考えていたように)これを行うことができます。

{$someArray.someKey=9} 
{$otherArray.9=$someValue} 

等価:ことを考えると

を:

{$otherArray[$someARray.$someKey]=$someValue} 
+0

私にとってはうまくいきませんでした。あなたのSmartyのバージョンが私のものと異なるからでしょうか? – mrbinky3000

+0

'='は中括弧の内側にある必要があります(Smarty 3)。私はそれを反映するために投稿を編集しました。ニースのソリューション、@ナン! – johndodo

関連する問題