274得票19回答
在命令行中切换Ubuntu 16.04上的PHP版本

我已经在我的Ubuntu 16.04上安装了PHP 5.6和PHP 7.1。 我知道如果我的web服务器是Apache,我可以做到:a2enmod php5.6 #to enable php5 a2enmod php7.1 #to enable php7 当我在 Apache 模块中禁用 ph...

142得票13回答
PHP7.1 json_encode() 浮点数问题

这不是一个问题,更像是一个提醒。我更新了一个使用json_encode()的应用程序到PHP7.1.1后,发现在处理浮点数时会将其扩展到17位。根据文档,PHP 7.1.x开始使用serialize_precision代替精度来编码双精度值。我猜这导致了一个例子值 472.185 ...

73得票8回答
在PHP 7中消除“声明...应该兼容”的警告

升级到PHP 7之后,日志几乎被这种错误淹没了: PHP警告:Example.php的Declaration of Example::do($a, $b, $c) should be compatible with ParentOfExample::do($c = null) on line...

29得票4回答
如何在Ubuntu中为PHP 7.1安装bcmath

我正在使用一台Ubuntu 16服务器进行测试,该服务器使用php7.1。我的一个应用程序使用了bcadd函数,我知道需要安装bcmath模块才能使用该函数,但是我找不到php7.1-bcmath模块。当我尝试执行apt install php-bcmath命令时,它只安装了php7.0-bc...

28得票8回答
将PHP可迭代对象转换为数组或可遍历对象

我很高兴PHP 7.1引入了可迭代伪类型。 现在,当您只是循环遍历这种类型的参数时,这非常棒。但当您需要将其传递给仅接受array或Traversable的PHP函数时,我不清楚该怎么做。例如,如果您想进行一个数组差异,并且您的iterable是Traversable,那么您将获得一个arr...

20得票2回答
返回空值与返回类型声明

我正在重构一个代码库,以便与PHP7一起使用,特别是实现标量类型提示和返回类型提示时,遇到了一个问题。我有一个带有某些属性的类,其中一个属性是 id。这个 id 不是必需的(你可以构造一个没有设置 id 的对象)。当创建这个类的新对象时,不设置 id,只有在将其插入到数据库中(由一个单独的映射...

20得票4回答
PHP Traversable 类型提示

我有一个相对简单的函数,其中使用了foreach function foo($t) { $result; foreach($t as $val) { $result = dosomething($result, $val); } re...

19得票1回答
当可空函数参数为 `null` 时如何使用默认值?

当调用以下函数时,在 PHP 7.1 版本中:private function doStuff(?int $limit = 999) { } 使用以下语法:doStuff(null); $limit的值变成了null。因此,可以说$limit的值被显式地设置为null。 有没有办法克服这个问题...

19得票6回答
Homebrew PHP似乎没有被链接。- Valet

我遇到了一个突然出现的问题,提示:无法确定已链接的 PHP。 我无法解决它,于是我卸载了 valet、php 和其依赖项。然后我安装了最新的 php7.1 但当我运行 valet install 时,出现了一条非常相似的错误:Homebrew PHP appears not to be lin...

16得票5回答
PHP7.1的替代mcrypt方案

自 PHP 7.1.0 起,Mcrypt 函数已被弃用。 我被弃用的字符串编码/解码函数:$key: secret key $str: string $encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key...