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"

}

]

}

}

]

所以你看结果发生了变化

回答:

translatedd($data)

translate ins IDE json对象(api响应)

我不知道是什么改变了密钥。

以上是 keyBy()不会更改密钥。 Laravel 5.5 的全部内容, 来源链接: utcz.com/qa/262802.html

回到顶部