keyBy()不会更改密钥。 Laravel 5.5
我正在与laravel合作,并做出了小小的API。我遇到了keyBy()
问题。 我得到的反应是这样keyBy()不会更改密钥。 Laravel 5.5
"translate": [ 0: {"id": 0, "lang": "az" },
1: {"id": 0, "lang": "ru" },
2: {"id": 0, "lang": "en" }
]
而且我想改变这些数组的键是这样的:
"translate": [ "az": {"id": 0, "lang": "az" },
"en": {"id": 0, "lang": "ru" },
"ru": {"id": 0, "lang": "en" }
]
与片段
foreach ($categories as $key => $row) { if ($row) {
$row->translate = $row->translate->keyBy('lang');
}
}
但结果是一样的。数组键不会更改。我不知道为什么。我只是dd($row->translate)
,我得到了我想要的结果,但最后的结果与之前一样。谢谢!
回答:
它应该没有任何问题,我相信问题是在别的地方。看看这个例子:
$object = new stdClass(); $object->translate = collect([
0 => (object) ['id' => 0, 'lang' => 'az'],
1 => (object) ['id' => 0, 'lang' => 'ru'],
2 => (object) ['id' => 0, 'lang' => 'en'],
]);
$object2 = new stdClass();
$object2->translate = collect([
0 => (object) ['id' => 0, 'lang' => 'x'],
1 => (object) ['id' => 0, 'lang' => 'y'],
2 => (object) ['id' => 0, 'lang' => 'z'],
]);
$categories = [$object, $object2];
foreach ($categories as $key => $row) {
if ($row){
$row->translate = $row->translate->keyBy('lang');
}
}
dd($categories);
结果有:
array:2 [▼ 0 => {#329 ▼
+"translate": Collection {#346 ▼
#items: array:3 [▼
"az" => {#335 ▼
+"id": 0
+"lang": "az"
}
"ru" => {#337 ▼
+"id": 0
+"lang": "ru"
}
"en" => {#338 ▼
+"id": 0
+"lang": "en"
}
]
}
}
1 => {#340 ▼
+"translate": Collection {#345 ▼
#items: array:3 [▼
"x" => {#341 ▼
+"id": 0
+"lang": "x"
}
"y" => {#342 ▼
+"id": 0
+"lang": "y"
}
"z" => {#343 ▼
+"id": 0
+"lang": "z"
}
]
}
}
]
所以你看结果发生了变化
回答:
translate
内dd($data)
translate
ins IDE json
对象(api
响应)
我不知道是什么改变了密钥。
以上是 keyBy()不会更改密钥。 Laravel 5.5 的全部内容, 来源链接: utcz.com/qa/262802.html