Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将php中的引用数组转换为coldfusion_Php_Coldfusion - Fatal编程技术网

将php中的引用数组转换为coldfusion

将php中的引用数组转换为coldfusion,php,coldfusion,Php,Coldfusion,我正在通过Liquid将PHP移植到Coldfusion。我遇到了一些问题,因为在PHP中,您可以通过引用传递数组,而在ColdFusion中,您不能这样做。我想知道的是,是否有人有将PHP翻译成ColdFusion的经验,并遇到过这个问题,以及他们使用了什么解决方案来解决这个问题 作为我所遇到的问题的一个例子,考虑一下: class LiquidTagIf extends LiquidDecisionBlock { private $_nodelistHolders = array(

我正在通过Liquid将PHP移植到Coldfusion。我遇到了一些问题,因为在PHP中,您可以通过引用传递数组,而在ColdFusion中,您不能这样做。我想知道的是,是否有人有将PHP翻译成ColdFusion的经验,并遇到过这个问题,以及他们使用了什么解决方案来解决这个问题

作为我所遇到的问题的一个例子,考虑一下:

class LiquidTagIf extends LiquidDecisionBlock
{

    private $_nodelistHolders = array();

    private $_blocks = array();

    public function __construct($markup, &$tokens, &$file_system)
    {
        $this->_nodelist = &$this->_nodelistHolders[count($this->_blocks)];
        array_push($this->_blocks, array(
            'if', $markup, &$this->_nodelist
        ));
        parent::__construct($markup, $tokens, $file_system);
    }
我在翻译中遇到的问题是:

$this->_nodelist = &$this->_nodelistHolders[count($this->_blocks)];
'if', $markup, &$this->_nodelist
还有这个:

$this->_nodelist = &$this->_nodelistHolders[count($this->_blocks)];
'if', $markup, &$this->_nodelist

所有这三个变量(\u节点列表\u节点列表持有者\u块)都是数组。虽然\u节点列表持有者\u块是在LiquidTagIf类中声明的,而\u节点列表是在名为LiquidTag的父类中声明的(继承链通常是LiquidTagIf->LiquidDecisionBlock->LiquidBlock->LiquidTag)

对于大多数问题,Ben Nadel已经在博客上给出了答案:/

基本上,ColdFusion数组实际上基于Java对象“Java.util.List”。要通过引用传递数组,需要将它们创建为“java.util.ArrayList”。对于所有数组函数(如ArrayAppend),它们仍然可以像您预期的那样工作,但是当您将它们传递给函数时,它将通过引用工作

<cfset arr = CreateObject(
"java",
"java.util.ArrayList"
).Init() />

与往常一样,对于大多数问题,本·纳德尔已经在博客上给出了答案:/

基本上,ColdFusion数组实际上基于Java对象“Java.util.List”。要通过引用传递数组,需要将它们创建为“java.util.ArrayList”。对于所有数组函数(如ArrayAppend),它们仍然可以像您预期的那样工作,但是当您将它们传递给函数时,它将通过引用工作

<cfset arr = CreateObject(
"java",
"java.util.ArrayList"
).Init() />


我已经试过了,但仍然有问题。也许我只是做得不对。我试过了,但仍然有问题。也许我只是做得不对。