PHP删除数组的第一个索引并重新索引
Posted
技术标签:
【中文标题】PHP删除数组的第一个索引并重新索引【英文标题】:PHP remove the first index of an array and re-index 【发布时间】:2011-03-01 12:03:49 【问题描述】:我有一个类似的数组 数组
(
[0] => A
[2] => B
[4] => C
[6] => D
)
我想删除第一个元素,然后重新索引数组以获取输出
(
[0] => B
[1] => C
[2] => D
)
我需要使用哪个 php 函数?
更新
输入数组是
Array
(
[0] => Array
(
[0] => Some Unwanted text
[1] => You crazyy
)
[2] => Array
(
[0] => My belowed text
[1] => You crazyy
)
[10] => Array
(
[0] => My loved quote
[1] => You crazyy
)
)
输出应该是这样的
Array
(
[0] => Array
(
[0] => My belowed text
[1] => You crazyy
)
[1] => Array
(
[0] => My loved quote
[1] => You crazyy
)
)
【问题讨论】:
你真的需要重新索引吗? 请使用var_export
,这样更容易测试。
有什么用?索引数组有什么用?使用foreach()
并忘记索引
我需要使用 foreach($myArray as $i=>$item) 然后使用 $resultId = $offset+$i
【参考方案1】:
你可以使用
array_shift($array)
Documentation for array_shift
【讨论】:
我不认为 array_shift 会重新索引数组 @lemon:手册另有说明:All numerical array keys will be modified to start counting from zero
请查看更新后的问题,如果传递数组的值再次是数组,array_shift 技巧将不起作用
Melmacian 对 array_splice 的回答似乎有效,有人试过吗?
对我来说(PHP 5.3.2,Ubuntu),它给出了更新问题中要求的输出。【参考方案2】:
使用 array_splice。
http://www.php.net/manual/en/function.array-splice.php
php > print_r($输入); 大批 ( [0] => 一个 [2] => 乙 [4] => C [6] => D ) php > array_splice($input, 0, 1); php > print_r($输入); 大批 ( [0] => 乙 [1] => C [2] => D )【讨论】:
需要省略第三个参数array_splice($input, 0) 使用array_splice($input, 1); // 1 是获取这个数组的起始索引 ([0] => B, [1] =>C, [2] => D) 如果您想要从函数返回的实际数组,这是我所需要的,这是完美的。而不是使用array_shift
来返回删除的元素,原因只有 PHP 开发人员知道?!?【参考方案3】:
我们可以使用array_shift()
来做到这一点,这将删除数组的第一个索引,然后使用array_values()
重新索引数组值,因为我没有从@User123 的答案中得到,请尝试以下一个:
<?php
$array = array(
0 => "A",
2 => "B",
4 => "C",
6 => "D"
);
array_shift($array);
$array = array_values($array);
echo "<pre>";
print_r($array);
输出:在这里查看输出https://eval.in/837709
Array
(
[0] => B
[1] => C
[2] => D
)
更新的输入数组也是如此
<?php
$array = array(
0 => array(
0 => "Some Unwanted text",
1 => "You crazyy"
),
2 => array(
0 => "My belowed text",
1 => "You crazyy"
),
10 => array(
0 => "My loved quote",
1 => "You crazyy"
)
);
array_shift($array);
$array = array_values($array);
echo "<pre>";
print_r($array);
输出:在这里查看输出https://eval.in/837711
Array
(
[0] => Array
(
[0] => My belowed text
[1] => You crazyy
)
[1] => Array
(
[0] => My loved quote
[1] => You crazyy
)
)
【讨论】:
【参考方案4】:您可以根据需要剪切数组任意多个索引
$newArray = array_splice($oldArray, $startIndex, $lengthToSlice);
【讨论】:
【参考方案5】:$array=array(
0 => 'A',
2 => 'B',
4 => 'C',
6 => 'D'
);
unset($array[0]);
$array = array_values($array);
print_r($array);
这也是使用unset
解决此问题的另一种方法
输出:
Array
(
[0] => B
[1] => C
[2] => D
)
【讨论】:
以上是关于PHP删除数组的第一个索引并重新索引的主要内容,如果未能解决你的问题,请参考以下文章