技术卡片 - 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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!