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

use*_*860 2 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'),
);
Run Code Online (Sandbox Code Playgroud)

PHP的另一部分是foreach循环:

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

}
Run Code Online (Sandbox Code Playgroud)

我认为这可以作为一个结构循环来完成,但我不确定.

Ada*_*ron 5

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

colors = [
    [27,78,181], // blue
    [22,163,35], // green
    [214,36,7]  // red
];
Run Code Online (Sandbox Code Playgroud)

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

fonts = {
    'Antykwa' = {'spacing' = -3, 'minSize' = 27, 'maxSize' = 30, 'font' = 'AntykwaBold.ttf'}
}
Run Code Online (Sandbox Code Playgroud)

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

您可以使用几种方法在CFML中循环遍历数组和结构:

for (element in array){

}

for (key in struct){
    value = struct[key];
}
Run Code Online (Sandbox Code Playgroud)

也可以使用迭代函数:

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

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

});
Run Code Online (Sandbox Code Playgroud)

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

一切都在文档中.