如何在特定值之前从数组中删除所有值

问题描述 投票:0回答:2

我有以下数组,我需要删除键83之前的所有值,其值均为BEGIN:VEVENT。我不需要按键来执行此操作,而只需要使用值即可。

Array ( 
    ...
    [83] => BEGIN:VEVENT 
    ...
)

我到目前为止已经尝试过...

// Find the position of the key you're looking for. 
$position = array_search('BEGIN:VEVENT', array_values($array)); 

// If a position is found, splice the array. 
if ($position !== false) { 
    array_splice($array, ($position - 1)); 
} 
var_dump($array);
php arrays slice
2个回答
0
投票

从您的解释中,我不了解您正在尝试执行以下操作:对于数组:

Array
(
    [0] => value1
    [1] => value2
    [2] => value3
    [3] => value4
    [4] => value5
    [5] => value6
    [6] => value7
    [7] => alltheway to the end...
)
for ($i=0; $i<3; $i++){
 $array[$i]= "BEGIN:VEVENT";
}

$array=array_values($array);
echo '<pre>'; print_r($array); echo '</pre>';

将打印出来:

Array
(
    [0] => BEGIN:VEVENT
    [1] => BEGIN:VEVENT
    [2] => BEGIN:VEVENT
    [3] => value4
    [4] => value5
    [5] => value6
    [6] => value7
    [7] => alltheway to the end...
)

这是您要做什么吗?


0
投票

一个短的衬里...

$data = [
    0 => 'A',
    1 => 'B',
    2 => 'BEGIN:VEVENT',
    3 => 'D',
    4 => 'E',
];

$result = array_slice($data, array_search('BEGIN:VEVENT', $data) ?: 0);
var_dump($result);

功能array_search搜索BEGIN:VEVENT的第一个匹配项并返回键。您可以将此键用作array_slice函数的偏移量,该函数将返回数组的其余部分。

如果给定数组中没有BEGIN:VEVENT,则将返回整个数组。

以上示例给出的结果:

array(3) {
    [0] => string(12) "BEGIN:VEVENT"
    [1] => string(1) "D"
    [2] => string(1) "E"
}
© www.soinside.com 2019 - 2024. All rights reserved.