Arrays Laravel方法,在深度嵌套的数组中使用;点“;符号
Arrays Laravel方法,在深度嵌套的数组中使用;点“;符号,arrays,laravel,Arrays,Laravel,Arr::add不适用于dot表示法Arr::set将仅在新元素不存在时创建新元素,否则将覆盖现有元素。有data\u set,它的工作原理类似于Arr::set,但它接受overwrite标志,该标志不满足我的需要(如果它设置为false而不是添加新项,它将跳过设置新值) 我的代码: $array = [['name' => 'Test', 'link' => 'test_link'], ['name' => 'Test1', 'link' => 'test1_l
Arr::add
不适用于dot
表示法Arr::set
将仅在新元素不存在时创建新元素,否则将覆盖现有元素。有data\u set
,它的工作原理类似于Arr::set
,但它接受overwrite
标志,该标志不满足我的需要(如果它设置为false而不是添加新项,它将跳过设置新值)
我的代码:
$array = [['name' => 'Test', 'link' => 'test_link'], ['name' => 'Test1', 'link' => 'test1_link']];
$result = [];
$position = 1;
foreach($array as $element) {
Arr::set($result, 'itemListElement.type', 'ListItem');
Arr::set($result, 'itemListElement.position', $position);
Arr::set($result, 'itemListElement.item.name', $element['name']);
Arr::set($result, 'itemListElement.item.link', $element['link']);
$position++;
}
我希望在itemListElement
父元素中有多个list元素
,而不是一个一直被覆盖的list元素
下面是它的外观:
[
"itemListElement" => [
[
"type" => "ListItem",
"position" => 1,
"item" => [
"name" => "Test",
"url" => "test_url",
]
],
[
"type" => "ListItem",
"position" => 1,
"item" => [
"name" => "Test1",
"url" => "test1_url",
]
],
]
]
你能试试这个吗
$array = [['name' => 'Test', 'link' => 'test_link'], ['name' => 'Test1', 'link' => 'test1_link']];
$result = [];
foreach($array as $key=>$element) {
Arr::set($result["itemListElement"][$key], 'type', 'ListItem');
Arr::set($result["itemListElement"][$key], 'position', $key + 1);
Arr::set($result["itemListElement"][$key], 'item.name', $element['name']);
Arr::set($result["itemListElement"][$key], 'item.link', $element['link']);
}
$result;