2011-09-19 35 views
0

我有以下的PHP數組:從PHP數組如果存在刪除值

Array 
(
    [0] => 750 
    [1] => 563 
    [2] => 605 
    [3] => 598 
    [4] => 593 
) 

我需要用PHP來執行陣列上的下列行動:

  1. 搜索陣列對於一個值(值將在 變量;我們稱之爲$number)。如果數組中存在值 ,請將其刪除。

如果有人能夠引導我如何做到這一點,將不勝感激。

說明:如果使它更容易,我可以形成數組,使鍵與數值相同。

+1

對於神起見 - 閱讀文檔http://ru2.php.net/manual/en/ref.array。 php – zerkms

+0

這是3個完全不同的問題。查看編號爲3的[Finding Min and Max](http://stackoverflow.com/questions/1428800/getting-the-min-and-max-values-from-a-php-array)問題。 – styfle

+0

好吧,我已經設法找到最小值和最大值,並刪除重複項,但如何刪除特定值(如果存在)?我將編輯這個問題,僅限於此。 – stefmikhail

回答

2
$array = array_unique($array) // removes dupicate values 


while(false !== ($num = array_search($num, $array))){ 
    unset($array[$num]); 
} 
$max = max($array); 

將搜索價值$ NUM所有鍵和取消他們

+0

while循環應特別檢查「!== false」,因爲如果找到第一個元素(索引0),則代碼不會取消設置該元素。 – styfle

+0

@genesisφ - 感謝您的回答。 「與Josh Randall的解密方法相比,你覺得如何? – stefmikhail

+0

@stefmikhail:他的人有點複雜和困難。 – genesis

2

可以說你$array

$array = array_unique($array) // removes dupicate values 

$array = arsort($array) 

$variable = $array[0] // the maximum value in the array, and place it in a variable. 

$key = array_search($array, $number); 

if($key){ 

    unset($array[$key]) // Search array for a value, value is present in array, remove it. 

} 
+0

非常感謝您提供如此出色的答案。我將能夠查看每個功能並更好地理解它。再次感謝! – stefmikhail

0

array_search()unset()似乎對你的問題的樣本數據的好方法。我只是爲了比較而展示一種不同的方式(或者如果您的用例與您在此處發佈的用例略有不同)。

方法:(Demo

$array=[750,563,605,598,593]; 

// if removing just one number apply the number as an array element 
$number=605; 
var_export(array_diff($array,[$number])); 

// if you are performing this task with more than one $number, make $numbers=array() and do the same... 
$numbers=[605,563]; // order doesn't matter 
var_export(array_diff($array,$numbers)); 

// if you need to re-index the output array, use array_values()... 
$numbers=[605,563]; // order doesn't matter 
var_export(array_values(array_diff($array,$numbers))); 

輸出:

array (
    0 => 750, 
    1 => 563, 
    3 => 598, 
    4 => 593, 
) 

array (
    0 => 750, 
    3 => 598, 
    4 => 593, 
) 

array (
    0 => 750, 
    1 => 598, 
    2 => 593, 
)