|
|
|
|
|
для: cheops
(02.10.2009 в 15:03)
| | >$mixed[$keynew] = $mixed[$key];
Не получится ли тут повторной обработки уже обработанных элементов?
Мне кажется, надежнее будет весь массив заново построить, нежели вбивать элементы в тот, что прямо сейчас раскручивает итератор foreach
$mixed = array_map('rec_stripslashes', $mixed);
$res = array();
foreach($mixed as $key => $value)
$res[stripslashes($key)] = $value;
$mixed = res;
|
| |
|
|
|
|
|
|
|
для: cheops
(02.10.2009 в 15:03)
| | Спасибо, никогда бы не пришло в голову так написать.
<?php
$mixed = array_map('rec_stripslashes', $mixed);
foreach($mixed as $key => $value)
{
//
}
| Думал, что $value в цикле нужно обрабатывать, и никак иначе. | |
|
|
|
|
|
|
|
для: cheops
(02.10.2009 в 14:59)
| | Почему, можно и объединить, только использовать какой-то такой код
<?php
function rec_stripslashes($mixed)
{
if(is_array($mixed))
{
$mixed = array_map('rec_stripslashes', $mixed);
foreach($mixed as $key => $value)
{
$keynew = stripslashes($key);
if($keynew != $key)
{
$mixed[$keynew] = $mixed[$key];
unset($mixed[$key]);
}
}
return $mixed;
}
else
{
return stripslashes($mixed);
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Рома
(02.10.2009 в 14:37)
| | >return в функции может быть только один?
Нет, почему, может быть и несколько, но срабатывает только один. | |
|
|
|
|
|
|
|
для: cheops
(02.10.2009 в 14:30)
| | . | |
|
|
|
|
|
|
|
для: Рома
(02.10.2009 в 14:23)
| | Нет, так как вы уничтожаете сначала элемент массива со старым ключом
а потом присваиваете ему элемент с новым ключом (которого, кстати говоря, ещё и нет).
$mixed[$key] = $mixed[$keynew];
|
Не понятно, также, какие цели преследует код
return $mixed[$key];
$value = stripslashes($value);
return $mixed[$value];
|
У вас срабатывает первый return, до второго даже дело не доходит.
PS Элемент, который удаляете при помощи unset() нужно обязательно сохранить. Получать элемент со старым ключом не имеет никакого смысла - старый ключ содержит результаты работы магических кавычек - от этого ключа можно только избавиться. Переименовать его нельзя, так как переименование состоит в том, что вы его уничтожаете и вместо него заводите новый ключ. | |
|
|
|
|
|
|
|
для: Рома
(02.10.2009 в 14:23)
| | нет, так не работает, я уже сам убедился | |
|
|
|
|
|
|
|
для: cheops
(02.10.2009 в 14:18)
| | . | |
|
|
|
|
|
|
|
для: Рома
(02.10.2009 в 14:13)
| | Если кавычек нет - ключ не меняется, если кавычки имеются старый ключ с экранированными кавычками, а этот подход требуется удаления кавычек. Ничего не попишешь. Если выбирается один из подходов - его нужно использовать до конца - иначе посыпятся дыры и ошибки. | |
|
|
|
|
|
|
|
для: cheops
(02.10.2009 в 12:14)
| | чето мне эта логика не нравиться, она возвращает новый ключ, а если сделать чтоб возвращало старый, вот так?
<?php
$keynew = stripslashes($key);
if($keynew != $key)
{
unset($arr[$key]);
$arr[$key] = $arr[$keynew];
}
|
| |
|
|
|
|