2012-05-30 3 views
0

Я построил эту функцию в PHP до сих пор называемой removeAllValuesMatching, но я не могу заставить ее работать. Я передаю два параметра $ arr и $ value. Не знаю, почему это происходит. Любая помощь будет принята с благодарностью. Это то, что я до сих пор:PHP Array Удаление совпадающих значений

<?php 
$arr = array(
    'a' => "one", 
    'b' => "two", 
    'c' => "three", 
    'd' => "two", 
    'e' => "four", 
    'f' => "five", 
    'g' => "three", 
    'h' => "two" 
); 
function removeAllValuesMatching($arr, $value){ 
foreach ($arr as $key => $value){ 
if ($arr[$key] == $value){ 
unset($arr[$key]); 
} 
} 
return $arr = array_values($arr); 
} 

print_r(removeAllValuesMatching($arr, "two")); 

?> 
+0

Что не работает? «Я передаю два параметра $ arr и $ value. Не знаю, почему это происходит». - Вам что-то не хватает между этими двумя предложениями? –

+0

Когда я передаю параметр ($ arr, «two»), он не распечатывает ни один из элементов массива. Он должен печатать на экране один, три, четыре, пять, три – vpd05141989

ответ

3

Вы перезапись $value здесь:

foreach ($arr as $key => $value){ 

Просто переименуйте его:

foreach ($arr as $key => $val) { 
    if ($val == $value) { 

Однако, лучший способ удалить элементы из массива:

function removeAllValuesMatching(array $arr, $value) { 
    $keys = array_keys($arr, $value); 
    foreach ($keys as $key) { 
     unset($arr[$key]); 
    } 
    return $arr; 
} 
0

Это моя полная версия, без переменных столкновения и отступов: это не вариант, вы всегда должны отступа правильно

<?php 
$arr = array(
    'a' => "one", 
    'b' => "two", 
    'c' => "three", 
    'd' => "two", 
    'e' => "four", 
    'f' => "five", 
    'g' => "three", 
    'h' => "two" 
); 

function removeAllValuesMatching($arr, $arg){ 
    foreach ($arr as $key => $value){ 
     if ($arr[$key] == $arg){ 
      unset($arr[$key]); 
     } 
    } 
    return $arr = array_values($arr); 
} 

print_r(removeAllValuesMatching($arr, "two")); 

?> 
Смежные вопросы