Вот смотри, читаю. Не могу не как понять что делать эта функция.
Проверяем, если массив тогда делаем array_map("htmlChars", $data); Что это за замкнутый круг?
function htmlChars($data)
{
if(is_array($data))
$data = array_map("htmlChars", $data);
else
$data = htmlspecialchars($data);
return $data;
}
Спустя 3 минуты, 52 секунды (30.03.2010 - 15:49) ApuktaChehov написал(а):
ща объясню
Функция htmlChars принимает как просто переменную так и массив.
Если пришел вдруг массив, то функция array_map применяет к каждому элементу пришедшего массива функцию htmlChars(эту же). В этом случае, этой же функции(htmlChars) уже передается не массив, а один его элемент, т.е. переменная. И она(функция htmlChars) работает с ним как с переменной. Когда элементы массив кончаются, работа завершается.
А если htmlChars пришла просто переменная, то она ее обрабатывает htmlspecialchars($data);
Вот и все.
![laugh.gif](http://phpforum.ru/html/emoticons/laugh.gif)
Функция htmlChars принимает как просто переменную так и массив.
Если пришел вдруг массив, то функция array_map применяет к каждому элементу пришедшего массива функцию htmlChars(эту же). В этом случае, этой же функции(htmlChars) уже передается не массив, а один его элемент, т.е. переменная. И она(функция htmlChars) работает с ним как с переменной. Когда элементы массив кончаются, работа завершается.
А если htmlChars пришла просто переменная, то она ее обрабатывает htmlspecialchars($data);
Вот и все.
Спустя 1 минута, 55 секунд (30.03.2010 - 15:51) Guest написал(а):
Спасибки! Пошла дальше читать!
Спустя 5 минут, 23 секунды (30.03.2010 - 15:57) Guest написал(а):
Хм, взяла попробывала и опять не поняла.
Так ведь функция и так все обработывает все элементы:
hell\o<br/>
rad"io<br/>
ww@w<br/>
ale"x<br/>
Зачем тогда делать $data = array_map("htmlChars", $data);
Так ведь функция и так все обработывает все элементы:
$ran = array('hell\o','lov"e','ww@w','marin"x');
foreach ($ran as $number)
{
echo htmlspecialchars($number)."<br/>\n";
}
// на выходе все элементы в спецсимволах
hell\o<br/>
rad"io<br/>
ww@w<br/>
ale"x<br/>
Зачем тогда делать $data = array_map("htmlChars", $data);
Спустя 2 минуты, 55 секунд (30.03.2010 - 16:00) ApuktaChehov написал(а):
Ну так, у Вас кусок кода, а не функция, к тому же как это будет работать с обычной переменной?
А там целая функция, которой удобнее пользоваться, чем повсеместно вставлять foreach.
делается только в том случае, если передается массив
А там целая функция, которой удобнее пользоваться, чем повсеместно вставлять foreach.
$data = array_map("htmlChars", $data);
делается только в том случае, если передается массив
Спустя 4 минуты, 57 секунд (30.03.2010 - 16:05) Guest написал(а):
Я просто имела ввиду что функция htmlspecialchars и так проходится по всем элементам массива. Зачем делать функцию:
Пример, есть массив:
function htmlChars($data)
{
if(is_array($data))
$data = array_map("htmlChars", $data);
else
$data = htmlspecialchars($data);
return $data;
}
Пример, есть массив:
$ran = array('hell\o','lov"e','ww@w','marin"x');
foreach ($ran as $number)
{
echo htmlspecialchars($number)."<br/>\n";
}
// на выходе все элементы в спецсимволах
Спустя 5 минут, 38 секунд (30.03.2010 - 16:10) ApuktaChehov написал(а):
Причем тут htmlspecialchars?
Это не она по массиву проходит, а foreach.
Читайте документацию
Это не она по массиву проходит, а foreach.
Читайте документацию
Спустя 36 минут, 28 секунд (30.03.2010 - 16:47) twin написал(а):
Эта функция может обработать многомерный массив. Такой к примеру
$ran = array(
array('hell\o','lov"e'),
array('ww@w','marin"x'),
);