Взорвать php для базы данных

#php

#php

Вопрос:

Это не работает, когда я получаю значение из URL, например selected.php?aa=2,3,

 $mainclass  = $_GET['aa'];
$classarray = explode(",", $mainclass);
$classarray = array_walk($classarray, 'intval');
$classa     = implode(',', $classarray);

$makefeed = mysql_query("SELECT * FROM studentnew WHERE fieldname IN (".$classa.")"); while ($cc = mysql_fetch_array($makefeed))  { }
  

Комментарии:

1. В чем ошибка / каков ваш результат / что не работает?

2. intval не изменяет значения массива и array_walk возвращает логическое значение, а не массив. Смотрите документацию: php.net/manual/en/function . array-walk.php Вы ищете array_map .

3. Пожалуйста, объясните ваши потребности …..?

Ответ №1:

При использовании array_walk() ключ / индекс передается функции обратного вызова ( intval() ) в качестве второго аргумента.

intval() второй аргумент — это основание. Вы бы не хотели, чтобы индекс массива передавался в качестве основы. Это вернет неверные результаты (я предполагаю, что вы хотите, чтобы все они были десятичными).

Вместо этого используйте array_map() .

Кроме того, array_walk() работает по ссылке и возвращает логическое значение. Итак, вы присваиваете это логическое значение $classarray переменной.

Ответ №2:

изменить

 $classarray = array_walk($classarray, 'intval');
  

Для

 array_walk($classarray, 'intval');
  

array_walk возвращает логическое значение, а не массив.
http://ru2.php.net/manual/en/function .array-walk.php

Комментарии:

1. Это не сработает. Если вы хотите изменить значение, вы должны определить параметр как ссылку, и я не думаю, что intval это делается.

Ответ №3:

Вам нужен array_map.

Изменить

 $classarray = array_walk($classarray, 'intval');
  

Для

 $classarray = array_map('intval' ,$classarray);