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'; ?>

冷融合:

<cfset variables.hello = 'world' />

你也可以这样写:

<cfset hello = 'world' />

但是,我喜欢很好地练习始终确定变量的范围。variables 作用域是变量的默认作用域,但明确说明这一点以避免命名冲突仍然是一种好习惯。

希望这可以帮助。米奇。

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 在这两种结构之间没有区别(“数字”和“关联”数组除外),但 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 回答