Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Переименование ключей массива
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
alidex
Отправлено: 24 Декабря, 2013 - 12:12:46
Новичок
Покинул форум
Сообщений всего: 35
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
OrmaJever
Спасибо за код.
как я понял вместо $array я подставляю свою переменную с массивом ( на выходе массив если он был $array так и останется $array?)
если все так то замены не произошло...
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
alidex, у вас 2 уровня вложенности, а пример приведен просто для демонстрации принципа. Вам предстоит самостоятельно выполнить пару манипуляций чтобы получить желаемый результат.
alidex
Отправлено: 24 Декабря, 2013 - 12:18:53
Новичок
Покинул форум
Сообщений всего: 35
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
IllusionMH, ок, спасибо, буду пробовать (Добавление)
попробовал вот так, но пока ничего... я вообще в правильном направлении двигаюсь?)
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
VenZell пишет:
if (!is_array($array)
|| empty($old_name)
|| empty($new_name)) {
return false;
}
Если устанавливать проверку, то, во-первых, нет смысла задавать пустые значения параметров по-умолчанию (функция, напротив, должна протестовать в таком случае против того, что они не переданы), а, во-вторых, проверять ключи через is_scalar - так как проверка пропустит что-нибудь наподобие объектов, что приведёт к неожиданным результатам. Кроме того, я бы вместо is_array добавил type-hinting для первого параметра.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
VenZell
Отправлено: 24 Декабря, 2013 - 13:16:26
Частый гость
Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Нет, потому что type-hinting для скалярных типов данных не поддерживается, поэтому придётся проверять в функции. Кроме того, если массив пуст - возврат false - неочевидное решение. Корректнее возвратить пустой массив.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
VenZell
Отправлено: 24 Декабря, 2013 - 13:27:09
Частый гость
Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013
Помог: 12 раз(а)
EuGen, спасибо, о type-hitting не знал, как и о нюансе с объектами. Постараюсь запомнить.
Отредактировал свое сообщение.
EuGen
Отправлено: 24 Декабря, 2013 - 13:30:06
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
VenZell is_string не совсем верно, ведь PHP корректно обрабатывает и ключи других типов данных (то есть, они являются допустимыми, пусть и преобразуются согласно внутренним правилам)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
VenZell
Отправлено: 24 Декабря, 2013 - 13:32:18
Частый гость
Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013
Помог: 12 раз(а)
EuGen, теперь окончательно понял, к чему был упомянут is_scalar. Еще раз спасибо.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.