У меня есть многомерный массив, который построен, как это (не против длины строки, я изменил значение)Добавить многомерный массив в многомерном массиве в определенной позиции
array(27) {
[0]=>
array(2) {
["name"]=>
string(16) "Arsenal FC"
["id"]=>
string(2) "1"
}
[1]=>
array(2) {
["name"]=>
string(8) "Liverpool FC"
["id"]=>
string(3) "2"
}
[2]=>
array(2) {
["name"]=>
string(18) "Manchester United"
["id"]=>
string(3) "3"
}
}
Теперь я хочу, чтобы добавить массив , который построен следующим образом:
array(2) {
["name"]=>
string(18) "Chelsea FC"
["id"]=>
string(3) "4"
между вторым и третьим элементом массива.
Я сделал это, как этот
$this->clubs = array_slice($this->clubs, 0, 2, true) +
['name' => 'Chelsea FC', 'id' => 4] +
array_slice($this->clubs, 2, sizeof($this->clubs), true);
Однако это возвращает следующий массив
array(27) {
[0]=>
array(2) {
["name"]=>
string(16) "Arsenal FC"
["id"]=>
string(2) "1"
}
[1]=>
array(2) {
["name"]=>
string(8) "Liverpool FC"
["id"]=>
string(3) "2"
}
["name"]=>
string(20) "Chelsea FC"
["id"]=>
int(4)
[2]=>
array(2) {
["name"]=>
string(18) "Manchester United"
["id"]=>
string(3) "3"
}
Как вы можете видеть, массив добавляется в правильное положение, но не в правильном формат (не многомерный). Теперь мне нужно будет добавить массив в позицию и увеличить количество всех остальных индексов.
Я пытался достичь его, как этот
if ($otherClubs->count() > 0) {
array_walk($this->clubs, function($item, $key) use($index, $otherClubs) {
if ($key > $index) {
$this->clubs[$key + $otherClubs->count()] = $item;
unset($this->otherClubs[$key]);
}
});
}
, но это полностью
array(36) {
[0]=>
array(2) {
["name"]=>
string(16) "Arsenal FC"
["id"]=>
string(2) "1"
}
[1]=>
array(2) {
["name"]=>
string(8) "Liverpool FC"
["id"]=>
string(3) "2"
}
["name"]=>
string(20) "Chelsea FC"
["id"]=>
int(3)
[2]=>
array(1) {
["id"]=>
string(3) "4"
}
уничтожен массив Как я могу добиться этого?
Ваша первая попытка намного лучше той, которую я использовал. И это работает без проблем! Спасибо! – Musterknabe
@Musterknabe ваш прием. –