2014-01-24 56 views
1

如果我有一个这样的数组...删除数组元素提供

array('1','2','3','4','10')

...我怎么能删除其值我公司供应的元素之前的元素。

例如:

如果我供给1然后array = (1,2,3,4,10)

如果它是2然后array = (2,3,4,10) //Remove the numbers before 2

如果它是3然后array = (3,4,10) //Remove the numbers before 3

如果它是4然后array = (4,10) //Remove the numbers before 4

如果是10然后array = (10) //Remove all before the 10

我目前想用if else做的。但有没有办法使用某种PHP数组函数本身来做到这一点。

+0

如果枚举数组,使用[array_search()](http://www.php.net/manual/en/function.array-search.php)来查找元素键,然后使用[array_splice( )](http://www.php.net/manual/en/function.array-splice.php) –

+0

@MarkBaker我的数组就像我的问题。 $ array = array(“1”,“2”,“3”,“4”,“10”) – Norman

回答

1

利用array_searcharray_slice

<?php 
$arr=array_slice($arr, array_search('4',array('1','2','3','4','10'))); 
print_r($arr); 

OUTPUT :

Array 
(
    [0] => 4 
    [1] => 10 
) 

Demo

+1

谢谢,你的答案效果最好。 – Norman

1
$myArray = array('1','2','3','4','10'); 
$value = 3; 

$key = array_search($value, $myArray); 
$myNewArray = array_splice($myArray, 0, $key); 
+0

你的答案中有很多东西混杂在一起。例如:第三行的$ myArray和$ value以及第四行的偏移量。 – Norman

+0

你的最终输出是提供的数字之前的数字,而它应该是它后面的数字。 – Norman

+0

嗯,我用$ value = 3执行它,并且我得到'[3,4,10]'的'$ myArray'值和'[1,2]'的'$ myNewArray'值,我认为这是你的期望值...如果你想放弃$ myNewArray,只需使用'array_splice($ myArray,0,$ key);'更新'$ myArray' –

1

也许这将有助于:

$myArray = array('1','2','3','4','10'); 
$x=3; 
$myArray = array_splice($myArray, array_search($x, $myArray), count($myArray)); 
0
$array = array_filter($array, function($item) use ($filterItem) { 
    return $item !== $filterItem; 
}); 

将筛选出每一个项目等于$filterItemarray_filter on php.net