我有一个多维数组,它是这样构建的(不要在意字符串长度,我修改了值)
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"
}
我该如何实现这个?