laravel - Laravel 5:如何使用 array_get 方法访问带有点的属性
问题描述
我有一个这样的数组:
$data = [
"x" => [
"y" => 5,
"a.b" => 10
]
]
我可以x.y
这样访问:
array_get($data, 'x.y');
但是,我怎样才能访问x.(a.b)
(有时写为x.a->b
)
我尝试了以下方法:
array_get($data, 'x.a.b');
array_get($data, 'x.a->b');
但似乎两者都不起作用。
解决方案
你不能用array_get
. 如果你看一下函数(vendor/laravel/framework/src/Illuminate/Support/helpers.php:155):
function array_get($array, $key, $default = null)
{
return Arr::get($array, $key, $default);
}
它调用类的 get 函数Arr
(vendor/laravel/framework/src/Illuminate/Support/Arr.php:278):
public static function get($array, $key, $default = null)
{
if (! static::accessible($array)) {
return value($default);
}
if (is_null($key)) {
return $array;
}
if (static::exists($array, $key)) {
return $array[$key];
}
if (strpos($key, '.') === false) {
return $array[$key] ?? value($default);
}
foreach (explode('.', $key) as $segment) {
if (static::accessible($array) && static::exists($array, $segment)) {
$array = $array[$segment];
} else {
return value($default);
}
}
return $array;
}
如果您查看处理 的 foreach 循环.
,它不支持您的数组具有的结构。
推荐阅读
- hibernate - 将项目添加到@OneToMany FetchType.LAZY 列表而不将列表读入内存?
- javascript - 如何存储引用 DOM 元素以供以后使用
- excel - 如何在EXCEL的条件语句中求和?
- sql-server - SQL Server - 索引查找:操作计数
- linux - 如何在 64 位环境下运行 32 位 CCSC 编译器?
- pascal - 为什么计算机打印一个超出帕斯卡字符串范围的值?
- c++ - 我的代码在运行时显示分段错误,有人可以帮助我吗?
- c - 编写一个冒泡排序函数,以数字方式对分数进行排序,但将名称字符串与它一起拖动
- gitlab - Gitlab企业版HTTPS
- django - 性能问题 AWS - Docker - Django