[英]How to delete previous all elements from a specified index in PHP?
我有一個數組,我想從當前指定的索引中刪除以前的所有元素
例如:
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
我有一個像3
的索引,所以我想刪除以前的所有類似
0 => "a", 1 => "b", 2 => "c"
並且只有
3=>"d", 4=>"e"
在我的新陣列中。 誰能幫我?
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$output = array_slice($array, 3);
輸出:
array(2) {
[0]=> string(1) "d"
[1]=> string(1) "e"
}
保存索引的另一種解決方案
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$output = array_slice($array, 3, null, true);
輸出:
array(2) {
[3]=> string(1) "d"
[4]=> string(1) "e"
}
你可以使用array_slice()
例如:
<?php
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$startingPosition = 3;
// Preserve keys
// |
// Your array Delete from Delete to |
// | | (if null, |
// | | to the end) |
// | | | |
// v v v v
$array = array_slice($array, $startingPosition , null, true);
var_dump($array);
輸出:
array(2) {
[3]=>
string(1) "d"
[4]=>
string(1) "e"
}
您可以使用數組切片等的驗證(如array_slice($array, 3)
),但也可以使用簡單的循環:
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$copy = false;
foreach($array as $k => $v) {
$copy |= ($k == 3);
if ($copy)
$res[$k] = $v;
}
您還可以使用unset()刪除元素。 如下所示。
<?php
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$index = 3;
for($i = 0; $i<$index; $i++)
{ unset($array[$i]); }
echo "<pre>";print_r($array);
?>
你可以使用array_slice :
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$newArray = array_slice($array, 3, NULL, TRUE);
echo '<pre>';
print_r($newArray);
echo '</pre>';
輸出:
Array
(
[3] => d
[4] => e
)
注意第4個參數:TRUE - > preserve_keys非常重要。
如果設置為true,則保留輸出數組中的鍵。
現在,您的新數組將僅在索引3
之后包含所有元素
此處不返回3
之前的所有元素。
試試這個
<?php
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$new_array = array_slice($array, 3); // 3 is your key to slice
print_r($new_array);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.