【问题标题】:Int is handled as string in PHP on CentOS 7.1 and Laravel 5.1Int 在 CentOS 7.1 和 Laravel 5.1 上的 PHP 中作为字符串处理
【发布时间】:2018-03-06 17:26:34
【问题描述】:

我在Windows系统上开发,经常使用!==比较来确保值和类型都符合预期。我只是遇到了问题(比较失败)并且刚刚发现 int 类型的值(在 mysql 中)是作为字符串处理的。

在 Windows 上看起来像这样:

Order {#488 ▼
  #table: "orders"
  #guarded: array:1 [▶]
  #hidden: []
  #fillable: array:9 [▶]
  #dates: array:1 [▶]
  #connection: null
  #primaryKey: "id"
  #perPage: 15
  +incrementing: true
  +timestamps: true
  #attributes: array:14 [▼
    "id" => 6
    "currency_id" => 1
    "user_id" => 1
    "coupon_id" => 1
    "status" => 2
    "created_at" => "2017-06-26 00:37:44"
    "updated_at" => "2017-06-26 00:37:50"
    "deleted_at" => null
  ]

在 CentOS 上是这样的:

Order {#488 ▼
  #table: "orders"
  #guarded: array:1 [▶]
  #hidden: []
  #fillable: array:9 [▶]
  #dates: array:1 [▶]
  #connection: null
  #primaryKey: "id"
  #perPage: 15
  +incrementing: true
  +timestamps: true
  #attributes: array:14 [▼
    "id" => "6"
    "currency_id" => "1"
    "user_id" => "1"
    "coupon_id" => "1"
    "status" => "2"
    "created_at" => "2017-06-26 00:37:44"
    "updated_at" => "2017-06-26 00:37:50"
    "deleted_at" => null
  ]

我真的不知道是什么原因造成的。请让我知道需要哪些其他信息才能找到它。因为我完全不知道,所以我不确切知道什么是相关的。

附加信息:

我正在使用 Laravel 5.1 并使用 Laravel 的 dd() 方法打印此信息。数据是 Eloquent 模型的一个实例。

【问题讨论】:

  • 您现在应该知道这还不够。您如何看待这些结构和数组?你如何填充它们?只是看到一些打印输出并不能说明可能出了什么问题。
  • 是的,我知道,但如前所述,我不知道从哪里开始,因此我没有发布太多信息。我将用您的评论的答案更新问题。谢谢

标签: php mysql laravel unix centos


【解决方案1】:

问题可能只是与您的数据库交互的底层扩展的一些细微差别,或者是与您的代码之间的抽象层中的一些实现差异(版本差异?)。如此有限的信息很难说清楚。

但是,一般来说,在 PHP 中,您应该假设数据库值作为字符串传递给您,即使它们实际上是数据库中的整数/浮点数/布尔值。假设您需要自己进行类型检查和(如果需要)类型转换。

我还要提醒您不要在 PHP 中进行过分严格的检查。我明白你为什么要这样做,在大多数其他语言中,我会和你在一起,但是 PHP 的定义特征之一是它对原生类型无所谓,并且能够在它们之间自动处理,所以在那种语言中你不应该尝试过分强制类型严格。

【讨论】:

  • 感谢您的回复,是 mysql 服务器本身将其转换为字符串,或者更好地说是 PDO 扩展。我现在修好了。我还将对 PHP 中的这种严格比较进行一些研究。我已经习惯了其他语言,并且从未在 PHP 中看到过这个问题(从现在开始),感谢您的提示!
猜你喜欢
  • 2017-08-09
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多