其它不兼容

  • PHP 3.0 的 Apache 模块不再支持 Apache 1.2 以前的版本。PHP 3.0 需要 Apache 1.2 或更高版本。

  • echo() 不再支持格式化字符串。如果想格式化字符串,使用 printf() 函数。

  • 在 PHP/FI 2.0 中,$foo[0]$foo 有着同样的效果。而 3.0 则不是这样的。

  • 不再支持使用 $array[] 读取数组。

    也就是说,不可以通过作 $data = $array[] 的循环来遍历一个数组。使用 current()next() 函数来代替。

    同样的,$array1[] = $array2 并没有把 $array2 的值赋给 $array1,而是把 $array2 这个数组赋给 $array1 的最后一项。这种情况也发生在多维数组上。

  • "+" 不再重载为字符串串连的运算符,它的作用是把字符串转换为数字并将它们相加。如果想串连字符串,使用 "." 代替。

例子 D-11. 从 2.0 移植:串连字符串

echo "1" + "1";

在 PHP 2.0 中该程序会显示 11,而在 PHP 3.0 中会显示 2。如果要在 PHP 3.0 中达到同样的效果,应该使用:
echo "1"."1";
$a = 1;
$b = 1;
echo $a + $b;

上面的程序在 PHP 2.0 和 3.0 中都会显示 2。
$a = 1;
$b = 1;
echo $a.$b;
面的程序在 PHP 3.0 中会显示 11。