PHP:如何删除索引后的所有数组元素[重复]

问题描述 投票:6回答:5

这个问题在这里已有答案:

是否可以删除索引后的所有数组元素?

$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:钥匙必须保留! +我只知道偏移钥匙!!

php arrays function output associative-array
5个回答
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
)

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


1
投票

我将遍历数组,直到您到达要截断数组的键,然后将这些项添加到新的临时数组,然后将现有数组设置为null,然后将temp数组分配给现有数组。


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);

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;
}

此代码未经过测试

© www.soinside.com 2019 - 2024. All rights reserved.