在一些教程上,我看到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) {
}
我认为这可以作为结构的循环来完成,但我不确定。
答案 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)
这完全在文档中。