PHP: ожидается синтаксическая ошибка; - PullRequest
0 голосов
/ 09 ноября 2010

Может кто-нибудь помочь мне выяснить, почему я получаю синтаксическую ошибку с этой функцией:

function removeFromArray(&$array, $key){
        foreach($array as $j=>$i){
            if($i == $key){
                $array = array_values(unset($array[$j])); //error on this line says expected ;
                return true;
                break;
            }
        }
}

Любая помощь, которая наиболее ценится!

Джонси

Ответы [ 5 ]

4 голосов
/ 09 ноября 2010

Удалить array_values. Кажется, вы просто хотите удалить одно значение, и unset уже выполняет свою работу:

function removeFromArray(&$array, $key){
    foreach($array as $j=>$i){
        if($i == $key){
            unset($array[$j]);
            return true;
        }
    }
}

Подробнее о unset.

Демо


Примечание:

  • Код после return больше не выполняется, поэтому break не требуется.
  • $key здесь вводит в заблуждение имя переменной. Лучше было бы $value.

Обновление: Если вы хотите переиндексировать значения массива (если у вас есть числовой массив), вы должны сделать это в два этапа (как unset не возвращает значение):

unset($array[$j]);
$array = array_values($array);

Демо

2 голосов
/ 09 ноября 2010

Проблема неустановлена.Значения array_values ​​ожидают массив в качестве параметра, но unset не имеет никакого возвращаемого значения.

2 голосов
/ 09 ноября 2010

Вы пытаетесь использовать функцию unset внутри array_values? Что именно вы ожидаете здесь?

Вы должны иметь возможность просто использовать: снята с охраны ($ массив [$ J]);

Поскольку вы передали массив по ссылке, этого должно быть достаточно для его удаления. Не нужно играть со значениями массива.

1 голос
/ 09 ноября 2010

Я вижу, что вы пытаетесь сделать, я предлагаю вам использовать это вместо:

function removeFromArray(&$array, $key){
        foreach($array as $j=>$i){
            if($i == $key){
                unset($array[$j]);
            }
        }
}

На самом деле вам ничего не нужно возвращать. unset является пустой функцией.

0 голосов
/ 09 ноября 2010

Unset ничего не возвращает:

void unset ( mixed $var [, mixed $var [, mixed $... ]] )
...