Всем добрый день! Есть массив в котором много значений. что бы каждое отдельно не делать может есть способ зразу весь массив перекодировать: while($array = mysql_fetch_array($query)){ $array['user'] = iconv("UTF-8", "CP1251", $array['user']); $array['user2'] = iconv("UTF-8", "CP1251", $array['user2']); ...... и тд может так: $array = iconv("UTF-8", "CP1251", $array); //не работает $array[] = iconv("UTF-8", "CP1251", $array[]);// тоже не работает Как можно???
Нет потому как нужен только один модуль использующий CP1251, а все остальное в UTF-8 (остального много)
Проще мне кажется сделать так. Сделать дамп БД, внешней прогой сконвертить его как надо (например штирлицем) и залить дамп в БД.
Такое не редко разумнее делать сразу в запросе http://dev.mysql.com/doc/refman/5.0/en/ ... nvert.html (пример дать не могу, мускула под рукой нету)
PHP: <?php function deepIconv($from, $to, $sbj){ if (is_array($sbj) || is_object($sbj)){ foreach ($sbj as &$val){ $val= deepIconv($from, $to, $val); } return $sbj; }else{ return iconv($from, $to, $sbj); } }
Не нужно, разница будет в 0.001% в лучшем случае, а вот "логичность" кода (и как следствие гибкость/простота/итд) будет разная.
Код (Text): function IconvArray(&$array){ foreach ($array as $key => $value){ if(is_array($value)){ IconvArray($array[$key]); }else{ $array[$key] = iconv('windows-1251', 'UTF-8', $value); } } }
Код (Text): array_walk_recursive($array, function(&$value,$key){ $value=iconv("UTF-8","CP1251",$value); });