#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);