VuePressVuePress
首页
  • 基础
  • UI
  • JavaScript
  • CSS
  • postcss
  • Vue3
  • Vue的设计与实现
  • 前端常用插件
  • PHP
  • Laravel
  • Linux
  • 线性代数
Category
AI
jiyun
Timeline
首页
  • 基础
  • UI
  • JavaScript
  • CSS
  • postcss
  • Vue3
  • Vue的设计与实现
  • 前端常用插件
  • PHP
  • Laravel
  • Linux
  • 线性代数
Category
AI
jiyun
Timeline
  • 基础知识

    • 基础语法
    • 面向对象
    • new static
    • 反射
    • ReflectionClass
    • 类型转换
      • 强制类型转换(Casting)
      • 类型函数
      • 自动类型转换
      • gettype() 函数
      • 其他相关函数
      • 在 laravel 中
      • 原始类型转换
    • 运算符

      • 安全访问运算符
    • 数组的基本操作
  • 类和对象

    • 类属性的默认值
    • 静态类
    • 静态类OR动态类
    • implements 关键字
    • 枚举

PHP 支持多种类型转换操作符,用于在不同数据类型之间进行转换。以下是 PHP 中常用的类型转换操作符和方法:

强制类型转换(Casting)

强制类型转换使用类型名称作为前缀,将值转换为指定类型。支持的类型包括 (int), (bool), (float), (string), (array), (object), (unset)。

$value = "123";

// 转换为整数
$int_value = (int) $value; 

// 转换为布尔值
$bool_value = (bool) $value;

// 转换为浮点数
$float_value = (float) $value;

// 转换为字符串
$string_value = (string) $value;

// 转换为数组
$array_value = (array) $value;

// 转换为对象
$object_value = (object) $value;

// 转换为 NULL
$unset_value = (unset) $value;

类型函数

PHP 提供了一些函数来进行类型转换:

  • intval(): 转换为整数
  • floatval() 或 doubleval(): 转换为浮点数
  • strval(): 转换为字符串
  • boolval(): 转换为布尔值
  • settype(): 设置变量的类型
$value = "123";

// 转换为整数
$int_value = intval($value);

// 转换为浮点数
$float_value = floatval($value);

// 转换为字符串
$string_value = strval($value);

// 转换为布尔值
$bool_value = boolval($value);

// 设置变量的类型
settype($value, "int"); // $value 现在是整数类型

自动类型转换

PHP 会在需要的时候自动转换变量的类型。例如,在算术运算中,如果参与运算的变量类型不匹配,PHP 会自动进行转换。

$number = "10" + 20; // $number 现在是 30,PHP 自动将 "10" 转换为整数

gettype() 函数

虽然不是转换操作符,但 gettype() 函数可以获取变量的类型,帮助我们在调试时了解变量的当前类型。

$value = 123;
$type = gettype($value); // $type 是 "integer"

其他相关函数

is_int(), is_string(), is_bool(), is_float(), is_array(), is_object(), is_null(): 这些函数用于检查变量是否为指定类型。

$value = 123;

if (is_int($value)) {
    echo "This is an integer";
}

这些类型转换操作符和方法可以帮助你在 PHP 中处理和转换数据类型,以满足不同的编程需求。

在 laravel 中

在 laravel 中,有哪些可用的类型转换函数?

在 Laravel 中,类型转换通常通过模型的 $casts 属性来实现,这个属性允许你定义模型属性的类型转换。以下是 Laravel 中一些常用的类型转换类型:

模型的 $casts 属性

在模型中,你可以使用 $casts 属性来定义类型转换:

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $casts = [
        'is_admin' => 'boolean',
        'created_at' => 'datetime',
        'updated_at' => 'datetime',
        'points' => 'integer',
        'options' => 'array',
        'amount' => 'float',
        'metadata' => 'json',
    ];
}

以下是 Laravel 支持的类型转换:

  • integer: 转换为整数
  • real, float, double: 转换为浮点数
  • string: 转换为字符串
  • boolean: 转换为布尔值
  • object: 转换为对象
  • array: 转换为数组
  • collection: 转换为 Illuminate\Support\Collection 实例
  • date: 转换为 Illuminate\Support\Carbon 实例(日期)
  • datetime: 转换为 Illuminate\Support\Carbon 实例(日期和时间)
  • timestamp: 转换为时间戳(整数)
  • json: 转换为 JSON 数据类型

自定义类型转换

你可以通过实现 CastsAttributes 接口来自定义类型转换器:

use Illuminate\Contracts\Database\Eloquent\CastsAttributes;

class Json implements CastsAttributes
{
    public function get($model, string $key, $value, array $attributes)
    {
        return json_decode($value, true);
    }

    public function set($model, string $key, $value, array $attributes)
    {
        return json_encode($value);
    }
}

然后在模型中使用自定义类型转换器:

use App\Casts\Json;

class User extends Model
{
    protected $casts = [
        'options' => Json::class,
    ];
}

原始类型转换

除了使用 $casts 属性,你还可以在属性访问器(Accessor)和修改器(Mutator)中手动进行类型转换:

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    // 访问器
    public function getIsAdminAttribute($value)
    {
        return (bool) $value;
    }

    // 修改器
    public function setIsAdminAttribute($value)
    {
        $this->attributes['is_admin'] = (bool) $value;
    }
}

这些类型转换方法和功能可以帮助你更方便地管理和处理 Laravel 应用程序中的数据类型转换,确保数据以正确的类型存储和检索。

Last Updated:
Contributors: BaronYan
Prev
ReflectionClass