php - 从父数组中删除第一个数组集
问题描述
我有一个包含许多数组集的数组。第一个(外部)数组有一个改变的键。我的目标是输入父数组(同样,密钥未知)并删除第一个数组集。数组集的键从零开始递增 - 理想情况下,这些键将被重新索引。
我考虑过在数组本身上使用一个递增计数的 foreach 循环,array_splice。
当外部数组的键未知时,问题似乎是访问数组集。例如,以下代码无法访问数组集(键已命名,只是未知或可更改)。
foreach ($array[0] as $item)
{
if ($i < 1)
{
unset($item[0]);
}
$i++;
}
如果我使用 array_splice 这可能会删除 foreach。
这是原始数组:
Array
(
[changeable] => Array
(
[0] => Array
(
[name] => Alpha
[score] => 1
)
[1] => Array
(
[name] => Beta
[score] => 1
)
[2] => Array
(
[name] => Gamma
[score] => 4
)
[3] => Array
(
[name] => Delta
[score] => 3
)
[4] => Array
(
[name] => Epsilon
[score] => 2
)
[5] => Array
(
[name] => Zeta
[score] => 2
)
)
)
这是预期的数组 - 注意:“alpha”数组被删除,键被重新索引。
Array
(
[changeable] => Array
(
[0] => Array
(
[name] => Beta
[score] => 1
)
[1] => Array
(
[name] => Gamma
[score] => 4
)
[2] => Array
(
[name] => Delta
[score] => 3
)
[3] => Array
(
[name] => Epsilon
[score] => 2
)
[4] => Array
(
[name] => Zeta
[score] => 2
)
)
)
解决方案
如果我正确理解您的问题,您可以使用array_shift执行此操作。
$array = [];
$array['random_key1'] = [
[
'name' => 'Alpha',
'score' => 1
],
[
'name' => 'Beta',
'score' => 1
],
[
'name' => 'Gamma',
'score' => 4
],
[
'name' => 'Delta',
'score' => 3
],
[
'name' => 'Epsilon',
'score' => 2
],
[
'name' => 'Zeta',
'score' => 2
]
];
$array['random_key2'] = [
[
'name' => 'Alpha',
'score' => 1
],
[
'name' => 'Beta',
'score' => 1
],
[
'name' => 'Gamma',
'score' => 4
],
[
'name' => 'Delta',
'score' => 3
],
[
'name' => 'Epsilon',
'score' => 2
],
[
'name' => 'Zeta',
'score' => 2
]
];
foreach($array as &$value) {
array_shift($value);
}
echo '<pre>';
print_r($array);
推荐阅读
- java - 如果未选中复选框,JavaFX 将删除执行的操作
- python-3.x - 将 zip 存档拆分为多个块
- jmeter - 如何在 JMeter 中创建具有唯一标头值的测试计划
- swift - 在表视图控制器中按列分隔对象
- android - 如何在 Android 应用程序中实现 MVP Passive View?
- c# - NAudio 无扬声器播放静音
- java - 重启或升级应用程序后,我的 Android 小部件停止更新
- svn - 从回购中签出一个目录时,“.svn”应该在哪里?
- javascript - 如何让子菜单先离开,然后填充body?
- c# - 使用 Linq 合并和排序数据