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