微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如何在指定之后删除数组的所有元素

我有一个像这样的数组:

Array ( [740073] => Leetee Cat 1 [720102] => cat 1 subcat 1 [730106]
=> subsubcat [740107] => and another [730109] => test cat )

我想删除元素之后的所有元素元素,键是’720102′.所以阵列将成为:

Array ( [740073] => Leetee Cat 1 [720102] => cat 1 subcat 1 )

我怎么做到这一点?到目前为止我只有这个…

foreach ($category as  $cat_id => $cat){
    if ($cat_id == $cat_parent_id){
    //remove this element in array and all elements that come after it 
    }
}

[编辑]第一个答案似乎适用于大多数情况,但不是全部.如果原始数组中只有两个项,则只删除一个元素,但不删除后面的元素.如果只有两个元素

Array ( [740073] => Leetee Cat 1 [740102] => cat 1 subcat 1 )

Array ( [740073] => [740102] => cat 1 subcat 1 )

为什么是这样?似乎每当$position为0时.

解决方法:

就个人而言,我会使用array_keys,array_searcharray_splice.通过使用array_keys检索键列表,可以将所有键作为数组中的值以0的键开头.然后使用array_search查找键的键(如果这有任何意义)将成为原始数组中键的位置.最后,array_splice用于删除该位置之后的任何数组值.

PHP

$categories = array(
    740073 => 'Leetee Cat 1',
    720102 => 'cat 1 subcat 1',
    730106 => 'subsubcat',
    740107 => 'and another',
    730109 => 'test cat'
);

// Find the position of the key you're looking for.
$position = array_search(720102, array_keys($categories));

// If a position is found, splice the array.
if ($position !== false) {
    array_splice($categories, ($position + 1));
}

var_dump($categories);

输出

array(2) {
  [0]=>
  string(12) "Leetee Cat 1"
  [1]=>
  string(14) "cat 1 subcat 1"
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐