【问题标题】:PHP / is_array() ternary: return array / create arrayPHP/is_array() 三元:返回数组/创建数组
【发布时间】:2021-09-04 00:28:27
【问题描述】:

有没有什么方法可以在不重复变量/而不将整个东西打包在一个函数中的情况下实现这样的事情?

所以不是...

$data = array();
$result = (is_array($data) ? $data : array());

这样的……

$data = array();
$result = (is_array($data) ? return : array());

【问题讨论】:

  • 不,没有快捷方式可以自动将参数返回给条件函数。
  • @Barmar 所以绝对没有办法模仿 ($var ?? null)-快捷方式的 PHP 行为,除非 PHP 开发人员自己引入这样的功能?
  • 对,他们必须为 1-argument 函数添加特殊语法。

标签: php return ternary


【解决方案1】:

正如其他人在 cmets 中指出的那样,没有普通的 PHP 构造可以做到这一点。

规范化输入数据是一种常见的模式,代码存在于一个通用函数中,其中使用不同类型的参数调用它的能力是有意的。在这种特定情况下,您可以尝试简单地将$data 转换为数组,尽管this doesn't work in all cases

/**
 * @param mixed $data
 */
function someMethod($data) {
   $data = (array) $data;
   // do your thing
}

如果你在 Laravel 中工作,Arr::wrap 方法将为你处理这个问题:

use Illuminate\Support\Arr;

/**
 * @param mixed $data
 */
function someMethod($data) {
   $data = Arr::wrap($data);
   // do your thing
}

但是,如果它不是那么通用,并且您想确保仅使用数组参数调用它,您可以让 PHP 通过在参数之前声明一个类型来强制它。

function someMethod(array $data) {
    // do your thing
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2015-12-24
    相关资源
    最近更新 更多