1

配列に値を格納する次のPHPコードがありますが、ColdFusionでアプリケーションを書き直しており、ColdFusionで同じ機能を実行するための構文がわかりません。

$data = array("isReadOnly" => false, "sku" => "ABCDEF", "clientVersion" => 1, "nuc" => $NUC, "nucleusPersonaId" => $personaID, "nucleusPersonaDisplayName" => $dispname, "nucleusPersonaPlatform" => $platform, "locale" => $locale, "method" => "idm", "priorityLevel" => 4, "identification" => array( "EASW-Token" => "" ));

誰か助けてもらえますか?

4

3 に答える 3

8

PHPにあるものは、ColdFusionでは「構造」または「オブジェクト」と呼ばれるもののように見えます。

PHPをCFML構文に変換する次のコードを試してください。

<cfset variables.data = {

    "isReadOnly" = false, 
    "sku" = "ABCDEF", 
    "clientVersion" = 1, 
    "nuc" = variables.NUC, 
    "nucleusPersonaId" = variables.personaID, 
    "nucleusPersonaDisplayName" = variables.dispname, 
    "nucleusPersonaPlatform" = variables.platform, 
    "locale" = variables.locale, 
    "method" = "idm", 
    "priorityLevel" = 4, 
    "identification" = { "EASW-Token" = "" }

} />

<cfdump var="#variables.data#" />

{}これは、ColdFusionで構造を作成する宣言を利用します。このように、中括弧(暗黙的な構造と呼ばれます)を使用するか、structNew()関数を使用してこれを行うことができます。暗黙のバージョンは、より新しく、より好ましい方法です。

また、変数を変換する必要があることにも注意してください。PHPでは、変数はデカールされ$withTheDollarSignます。ColdFusionでは、変数は<cfset />タグを使用して作成されます。

これらは同じです:

PHP

<?php $hello = 'world'; ?>

ColdFusion:

<cfset variables.hello = 'world' />

次のように書くこともできます。

<cfset hello = 'world' />

ただし、変数のスコープを常に設定することをお勧めします。変数スコープは変数のデフォルトスコープですが、名前の衝突を避けるために、これを明示的に指定することをお勧めします。

お役に立てれば。マイキー。

PS-{}ボーナスポイントとして、配列は、を使用する代わりにを使用することを除いて、非常によく似た方法で作成されます[]。これは、ColdFusionで構造と配列を作成する方法に関する優れた記事です。

http://www.bennadel.com/blog/740-Learning-ColdFusion-8-Implicit-Struct-And-Array-Creation.htm

于 2013-03-12T11:59:39.357 に答える
4

これは配列ではありません。これはマップ (キーと値のペア) です。PHP では、これら 2 つの構造に違いはありませんが (「数値」配列と「連想」配列を除く)、ColdFusion (Java ベース) には違いがあります。ColdFusion では、同等のものは構造体になります。

 <cfscript>
     data = structNew();
     data["isReadOnly"] = false;
     data["sku"] = "ABCDEF";

     // You can also nest structs, if need be
     data["identification"] = structNew();
     data["identification"]["EASW-Token"] = "";
 </cfscript>
于 2013-03-12T11:58:20.680 に答える
0

別のオプションは、各オプションを個別に宣言することです。variables.プレフィックスも必要ありません。attributecollection=""この構文は、 などのタグのオプションを使用する場合におそらく最も一般的に使用されます<cfmail>が、どのシナリオでも機能します。

<cfset data = {} /> // create a struct
<cfset data.isReadOnly = false />
<cfset data.sku = 'ABCDEF' />
<cfset data.clientVersion = 1 />
<cfset data.nuc = NUC />
<cfset data.nucleusPersonaId = personaID />
<cfset data.nucleusPersonaDisplayName = dispname /> 
<cfset data.nucleusPersonaPlatform = platform />
<cfset data.locale = locale />
<cfset data.method = 'idm' />
<cfset data.priorityLevel = 4 />
<cfset data.identification = { EASW-Token = '' } />

<cfdump var="#data#" />  
于 2013-03-12T13:26:14.447 に答える