是否可以删除索引后的所有数组元素?
$myArrayInit = array(1=>red, 30=>orange, 25=>velvet, 45=>pink);
现在有些“神奇”
$myArray = delIndex(30, $myArrayInit);
获取
$myArray = array(1=>red, 30=>orange);
由于$myArray
中的密钥不是连续的,我认为没有机会array_slice()
Please note
:必须保留密钥! +我只知道偏移键!!
答案 0 :(得分:20)
<?php
$myArrayInit = [1 => 'red', 30 => 'orange', 25 => 'velvet', 45 => 'pink']; //<-- Your actual array
$offsetKey = 25; //<--- The offset you need to grab
//Lets do the code....
$n = array_keys($myArrayInit); //<---- Grab all the keys of your actual array and put in another array
$count = array_search($offsetKey, $n); //<--- Returns the position of the offset from this array using search
$new_arr = array_slice($myArrayInit, 0, $count + 1, true);//<--- Slice it with the 0 index as start and position+1 as the length parameter.
print_r($new_arr);
<强> Output :
强>
Array
(
[1] => red
[30] => orange
[25] => velvet
)
答案 1 :(得分:2)
尝试
$arr = array(1=>red, 30=>orange, 25=>velvet, 45=>pink);
$pos = array_search('30', array_keys($arr));
$arr= array_slice($arr,0,$pos+1,true);
echo "<pre>";
print_r($arr);
请参阅demo
答案 2 :(得分:1)
我会遍历数组,直到你到达想要截断数组的键,然后将这些项添加到一个新的临时数组,然后将现有数组设置为null,然后将temp数组分配给现有阵列。
答案 3 :(得分:1)
这使用标志值来确定您的限制:
$myArrayInit = array(1=>'red', 30=>'orange', 25=>'velvet', 45=>'pink');
$new_array = delIndex(30,$myArrayInit);
function delIndex($limit,$array){
$limit_reached=false;
foreach($array as $ind=>$val){
if($limit_reached==true){
unset($array[$ind]);
}
if($ind==$limit){
$limit_reached=true;
}
}
return $array;
}
print_r($new_array);
答案 4 :(得分:0)
试试这个:
function delIndex($afterIndex, $array){
$flag = false;
foreach($array as $key=>$val){
if($flag == true)
unset($array[$key]);
if($key == $afterIndex)
$flag = true;
}
return $array;
}
此代码未经过测试