我有以下数组,我需要删除键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);
从您的解释中,我不了解您正在尝试执行以下操作:对于数组:
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...
)
这是您要做什么吗?
一个短的衬里...
$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"
}