【发布时间】:2014-05-13 14:34:14
【问题描述】:
当我遇到一个特定情况时,我正在处理一个示例web-service,以输出两个给定值(字符串)中的任何一个的结果。所以,我想,我可以使用true-false 作为这些字符串数组的索引吗?为了验证,我测试了相同的并且它正在工作。逻辑对我来说很清楚,true 和 false 作为数组的 1 和 0 索引:
$arr = array(true=>"string1",false=>"string2");
$res = $arr[$test_val];
但是,我可以使用以下方法实现相同的效果:
$res = $test_val? "String1":"String2";
所以,我想知道,我认为哪种方法更好,在这两种方法中,相同数量的内存被用完?或者不,数组使用更多,对吧?
【问题讨论】:
-
当使用布尔值作为数组键时,它们被转换为整数,即键 true 将实际转换为 1,而键 false 转换为 0
-
我认为您正在为一些不重要的事情而苦恼。但我会选择三进制,因为它更易于阅读。如果您的应用需要这种级别的优化,那我很惊讶
-
@Mark:是的,我知道。我清楚地指出了这一点。
-
@edmondcommerce:我没有痛苦。我只是好奇而已。我在#stackoverflow 上搜索并没有发现类似的问题。所以我只是想就此发表意见,就像一次健康的谈话一样。显然不是得分的事情
-
马克贝克的答案来源:php.net/manual/en/language.types.array.php:
Bools are cast to integers, too, i.e. the key true will actually be stored under 1 and the key false under 0.