技术卡片 - PHP 数组强制转换与 array_wrap 方法的比较
array_wrap
是 Laravel 框架的一个方法(现在要通过 Arr::wrap
来调用),用于将目标类型转化为数组类型。
<?php
function array_wrap($value)
{
if (is_null($value)) {
return [];
}
return is_array($value) ? $value : [$value];
}
可以看出 array_wrap
与 PHP 强制类型转化的不同。array_wrap
只是简单的将用数组包裹目标类型,而 PHP 的数组强制转换则会遵循一定规则。
示例 1 - 将空对象转化为数组
class Foo {}
$foo = new Foo();
(array) $foo;
// => []
array_wrap($foo);
// [
// Foo {#1031},
// ]
示例 2 - 将非空对象转化为数组
class Bar {
protected $bar;
}
$bar = new Bar();
(array) $bar;
// [
// "\0*\0bar" => null,
// ]
array_wrap($bar);
// [
// Bar {#1030},
// ]
也就是说,如果你的目标类型中可能含有对象,那么使用 array_wrap
会比数组强制转换更加合适,一般情况使用数组的强制转换就行。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: