PHP通过索引将数组元素作为字符串文字访问,好还是坏?

时间:2010-09-22 01:55:54

标签: php

$array = array(
  'first element',
  'second element',
  'third element',
);

echo $array['1'];
echo $array[1];

他们都产生相同的结果。

我问这个问题,因为我注意到例如drupal将索引作为字符串文字访问,其中php.net使用整数。

一方面有优势吗?

当然我知道为什么$array[foo]不好。

3 个答案:

答案 0 :(得分:6)

它在语义方面无动于衷。

执行$array['string']时,'string'是基数为10的数字,不带前导零和小数点,适合整数范围(即,在-PHP_INT_MAX-1和{{1}之间}),它将被转换为整数。

就性能而言,最好直接使用整数,因为这会跳过转换步骤。

答案 1 :(得分:3)

PHP只会将'1'强制转换为整数或数组键0x01。

从理论上讲,如果它们只是一个简单的数组,就像你发布的一个简单的数组,它们的整数值会更快。

答案 2 :(得分:3)

如果两个表单用于分配值,那么这两个表格将覆盖另一个表格...例如:

<?php
$new = array(1 => "number", "1" => "string");

echo count($new); // <== Output: 1

echo "The array has {$new[1]} and {$new['1']}"; 
//Output: The array has string and string

?>

Live example


从理论上讲,服务器工作较少的工作速度更快。由于$array[1]不需要类型强制,因此速度更快。