什么可能相当于ColdFusion中的PHP数组?

时间:2014-05-09 03:03:34

标签: php coldfusion

在一些教程上,我看到PHP数组与ColdFusion数组完全不同,并且PHP没有结构。我需要知道ColdFusion中可能的以下PHP代码的哪一部分:

public $colors = array(
    array(27,78,181), // blue
    array(22,163,35), // green
    array(214,36,7),  // red
);

public $fonts = array(
    'Antykwa'  => array('spacing' => -3, 'minSize' => 27, 'maxSize' => 30, 'font' => 'AntykwaBold.ttf'),
    'Candice'  => array('spacing' =>-1.5,'minSize' => 28, 'maxSize' => 31, 'font' => 'Candice.ttf'),
    'DingDong' => array('spacing' => -2, 'minSize' => 24, 'maxSize' => 30, 'font' => 'Ding-DongDaddyO.ttf'),
    'Duality'  => array('spacing' => -2, 'minSize' => 30, 'maxSize' => 38, 'font' => 'Duality.ttf'),
    'Heineken' => array('spacing' => -2, 'minSize' => 24, 'maxSize' => 34, 'font' => 'Heineken.ttf'),
    'Jura'     => array('spacing' => -2, 'minSize' => 28, 'maxSize' => 32, 'font' => 'Jura.ttf'),
    'StayPuft' => array('spacing' =>-1.5,'minSize' => 28, 'maxSize' => 32, 'font' => 'StayPuft.ttf'),
    'Times'    => array('spacing' => -2, 'minSize' => 28, 'maxSize' => 34, 'font' => 'TimesNewRomanBold.ttf'),
    'VeraSans' => array('spacing' => -1, 'minSize' => 20, 'maxSize' => 28, 'font' => 'VeraSansBold.ttf'),
);

PHP的另一部分是foreach循环,如:

foreach($list as key=>$value) {

}

我认为这可以作为结构的循环来完成,但我不确定。

1 个答案:

答案 0 :(得分:5)

第一个例子类似于CFML数组,例如:

colors = [
    [27,78,181], // blue
    [22,163,35], // green
    [214,36,7]  // red
];

尽管PHP没有一个名为" struct"的东西,但它有一个关联数组,对于所有意图和目的来说都是一样的。你的后一个例子就是其中之一。 CFML等同(缩写)将是:

fonts = {
    'Antykwa' = {'spacing' = -3, 'minSize' = 27, 'maxSize' = 30, 'font' = 'AntykwaBold.ttf'}
}

注意:你不需要引用CFML中的密钥名称,但是如果不这样做,ColdFusion会将它们全部转换为大写(我不认为Railo会这样做,而且那里有' sa在CF11中设置以防止这种情况发生)。请注意,在CF中,不保留结构中键的顺序;它可以在Railo中,如果使用链接的结构(我会留给你查询)

您可以通过几种方式在CFML中循环遍历数组和结构:

for (element in array){

}

for (key in struct){
    value = struct[key];
}

还可以使用迭代函数:

array.each(function(index, value, array){
});

struct.each(function(key, value, struct){

});

还有其他迭代方法,例如filter()map()等。 Railo 4.2和COldFusion 11都有新功能。每个版本都有each()的无头功能,例如:arrayEach(array, callback)structEach(struct, callback)

这完全在文档中。