技術卡片 - PHP 陣列強制轉換與 array_wrap 方法的比較

心智極客發表於2019-12-21

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 會比陣列強制轉換更加合適,一般情況使用陣列的強制轉換就行。

點選 連結,免費加入心智極客的知識星球分享群,共同成長。

相關文章