Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Преобразовать массив русских и английских имен
 
 автор: vorobey   (13.03.2011 в 21:30)   письмо автору
 
 

Так получилось что из $_POST приходит такой массв

Array
(
[andrey] => andrey
[андрей] =>андрей 
[vova] => vova
[вова] => вова
[sergey] => sergey
[сергей] => сергей
....
)

нужно привести к виду : [key латиница] => value кирилица
вот пробовал

reset($_POST);
foreach($_POST as $k){
 $key = current($_POST);
 $value = next($_POST);
 $test[$key] = $value ;
}

ну нето это ...

зы
вот такой массив нужно получить

Array
(
[andrey] => андрей 
[vova] => вова
[sergey] => сергей
....
)

  Ответить  
 
 автор: Valick   (13.03.2011 в 21:42)   письмо автору
 
   для: vorobey   (13.03.2011 в 21:30)
 

а как так получилось, что приходит такой массив? не ужели нельзя с этим разобраться, чтоб приходил уже нормальным.

  Ответить  
 
 автор: vorobey   (13.03.2011 в 22:00)   письмо автору
 
   для: Valick   (13.03.2011 в 21:42)
 

Походу нельзя.
исходный массив
<?php
$config  
= array(
andrey => андрей,
vova => вова,
....
); 
?>

Форма вот

<?php
foreach($config as $k=>$v) { ?>
            <div class="element_left">
<input name="<?php echo $k?>" type="text" value="<?php echo $k?>">
            </div>
            <div class="element_right">
 <input name="<?php echo $v?>" type="text" value="<?php echo $v?>">
            </div>
<?php 
}
?>

выводит список имен. имя(ключ ) ------- имя(значение)
И ключ и значение меняется в форме. Как их отослать по другому!?

  Ответить  
 
 автор: cheops   (13.03.2011 в 22:18)   письмо автору
 
   для: vorobey   (13.03.2011 в 21:30)
 

Получится, только в том случае, если русские имена идут вслед за латинским, не перемешиваясь с остальными именами. Иначе невозможно будет автоматически назначить соответствие.

  Ответить  
 
 автор: vorobey   (13.03.2011 в 22:25)   письмо автору
 
   для: cheops   (13.03.2011 в 22:18)
 

Так такой и получается массив . но после того перебора получается смещение (каша)

  Ответить  
 
 автор: Valick   (13.03.2011 в 22:55)   письмо автору
 
   для: vorobey   (13.03.2011 в 22:25)
 

честно скажу не знаю, может можно как-то стандартными функциями оба подмассива сочленить, но щас некогда углубляться в теорию. самое главное проанализируйте принцип :)

<?php
$config  
= array(
andrey => 'андрей',
vova => 'вова',
masha=> 'маша');

if(
$_POST[go]){
unset(
$config);
echo 
"<PRE>";
print_r($_POST);
echo 
"</PRE>";
while (
$a current($_POST[1])) {
    
$config[$a]=$_POST[2][key($_POST[1])];
    
next($_POST[1]);
}
}
echo 
"<PRE>";
print_r($config);
echo 
"</PRE>";

?>
<form action="vor.php" method="POST">
<?php
foreach($config as $k=>$v) {?>
            <div class="element_left">
<input name="1[<?php echo $k?>]" type="text" value="<?php echo $k?>">
            </div>
            <div class="element_right">
 <input name="2[<?php echo $k?>]" type="text" value="<?php echo $v?>">
            </div>
<?php 

?>
<input type="submit" name="go" value="GO">
</form>

  Ответить  
 
 автор: vorobey   (13.03.2011 в 23:35)   письмо автору
 
   для: Valick   (13.03.2011 в 22:55)
 

Супер ;)
<?php 
while ($a current($_POST)) {
    
$config[$a]=$_POST[key($_POST)];
    
next($_POST);

?>

Спасибо большое!

  Ответить  
 
 автор: Valick   (13.03.2011 в 23:41)   письмо автору
 
   для: vorobey   (13.03.2011 в 23:35)
 

это что? :)
если уж на то пошло, то для

Array
(
[andrey] => andrey
[андрей] =>андрей 
[vova] => vova
[вова] => вова
[sergey] => sergey
[сергей] => сергей
....


<?php 
while ($a current($_POST)) {
    
$config[$a]=next($_POST);
    
next($_POST);

?>

но так не делают
зря Вы не стали анализировать код :)

[поправлено модератором]

  Ответить  
 
 автор: vorobey   (14.03.2011 в 01:27)   письмо автору
 
   для: Valick   (13.03.2011 в 23:41)
 

А что не так ? значение от current($_POST[1]) взять нельзя.
Или что то другое ?

  Ответить  
 
 автор: Valick   (14.03.2011 в 09:27)   письмо автору
 
   для: vorobey   (14.03.2011 в 01:27)
 

значение от current($_POST[1]) взять нельзя
это вопрос или утверждение?
current($_POST[1]) как раз нужно брать и я показал Вам как это сделать
в Вашем первоначальном варианте Вы не отделили "мух от котлет", нельзя разные сущности пхать в один массив. В моем варианте 2 массив повторяет исходный и служит для изменения значений, а 1 массив является вспомогательным и служит для изменения ключей, в таком варианте сохраняется зависимость ключь->значение. получив на сервере эти два массива Вы с ними можете делать все что угодно вплоть до удаления элементов любого из массивов или сортировки любого* массива, оставшиеся элементы не потеряют зависимость.
В Вашем варианте ни о сортировке ни о чем либо другом речи быть не может, и в случае чего (а случаи бывают всякие) Вы концов "не найдете".

  Ответить  
 
 автор: vorobey   (15.03.2011 в 00:12)   письмо автору
 
   для: Valick   (14.03.2011 в 09:27)
 

Я уже понял.
Переделал отправку ПОСТ формы, а то винигрет из значений... я уже начал визуально запутыватся
такой массив наглядней
Array
(
[key1] => andrey
[value1] =>андрей 
[key2] => vova
[value2] => вова
[key3] => sergey
[value3] => сергей
....


Написал такую функцию

<?php
function Post_Arr() {
    
$count count($_POST);
    for (
$i 0$i <= $count$i++) {
        
$key "key" $i;
        
$value "value" $i;
        
$POST[$_POST[$key]] = $_POST[$value];
        if (empty(
$POST[$_POST[$key]]))
            unset(
$POST[$_POST[$key]]);
    }
    return 
$POST;
}
?>

Теперь все ок

  Ответить  
 
 автор: Valick   (15.03.2011 в 00:53)   письмо автору
 
   для: vorobey   (15.03.2011 в 00:12)
 

Вот интересно мне, аж затылок зачесался... :)
я Вам предложил код проще, короче и лучше по всем параметрам
для внесения изменений в форму всего-лишь изменить одну букву и добавить 4 квадратных скобки
про обработчик и говорить нечего
мягко говоря странно...
ну что же, хозяин барин, пусть у Вас остается так как Вам угодно

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования