【问题标题】:Convert PHP array to ColdFusion syntax将 PHP 数组转换为 ColdFusion 语法
【发布时间】:2013-03-12 11:46:01
【问题描述】:

我有以下 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" => "" ));

有人可以帮忙吗?

【问题讨论】:

    标签: php arrays coldfusion


    【解决方案1】:

    您在 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 中,变量是使用&lt;cfset /&gt; 标签创建的。

    这些都是一样的:

    PHP

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

    ColdFusion:

    <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

    【讨论】:

    • 查看文档可能也会有所帮助:help.adobe.com/en_US/ColdFusion/10.0/Developing/…
    • 现在为什么他被回答了,即使他没有尝试过...... @Adam 记下来
    • @user3454903 你看不出你问的问题和这个人问的问题之间的区别吗?他们询问了一个单一的声明。你问的是几十行代码。建议您阅读以下内容:stackoverflow.com/help/on-topic,特别是“3”点。
    • 好吧,即使我可以把事情分开,但我知道你仍然会这样做,
    【解决方案2】:

    这不是一个数组。这是一个映射(键值对)。 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>
    

    【讨论】:

    • 注意:在 CF8 及更高版本上,您可以使用 {} 而不是 structNew()
    • @MattBusche 但是,如果这真的提高了可读性,那是相当有争议的。 ;) 当你明白你在做什么时,你总是可以在以后学习编写更短的代码。
    【解决方案3】:

    另一种选择是分别声明每个选项。您也不需要 variables. 前缀。此语法可能最常用于将attributecollection="" 选项用于&lt;cfmail&gt; 等标记时,但适用于任何情况。

    <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#" />  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 2011-02-21
      • 2011-07-11
      • 1970-01-01
      相关资源
      最近更新 更多