0
$array = ['key' => null];

echo data_get($array, 'key', 'default') // Result was default
$array = (object) $array;
echo data_get($array, 'key', 'default') // Result was null 

像这样或数组和对象这样做有什么具体原因吗?

Laravel doc ref他们这样提到data_get function retrieves a value from a nested array or object using "dot" notation:所以数组和对象的行为应该是相同的

4

1 回答 1

1

如果您检查 的来源data_get(),您会注意到

if (Arr::accessible($target) && Arr::exists($target, $segment)) {
    $target = $target[$segment];
} elseif (is_object($target) && isset($target->{$segment})) {
    $target = $target->{$segment};
} else {
    return value($default);
}

isset($target->{$segment})返回falsefornull并因此返回具有null搜索键值的对象的默认值。

于 2018-02-21T08:18:06.077 回答