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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Раскидать массив

Сообщения:  [1-7] 

 
 автор: sim5   (26.10.2010 в 15:49)   письмо автору
 
   для: gOFREe   (26.10.2010 в 14:59)
 

Зачем преобразовывать массив в строку, чтобы потом париться с ней в doubleExplode? Вот для чего это все? И зачем имена переменных в кавычки помещаете, для красоты?

  Ответить  
 
 автор: gOFREe   (26.10.2010 в 14:59)   письмо автору
 
   для: sim5   (25.10.2010 в 22:19)
 

Вот подсмотрел примерно такой вывод, он нормальный или можно сделать проще?

<?
function doubleExplode ($del1$del2$array){
    
$array1 explode("$del1"$array);
foreach(
$array1 as $key=>$value){
$array2 explode("$del2"$value);
foreach(
$array2 as $key2=>$value2){
$array3[] = $value2
}
}
    
$afinal = array();
for ( 
$i 0$i <= count($array3); $i += 2) {
    if(
$array3[$i]!=""){
    
$afinal[trim($array3[$i])] = trim($array3[$i+1]);
    }
}
return 
$afinal;


$_POST array_map(null$_POST['a'], $_POST['b']);
//либо можно опять функции стандартные использовать
array_walk($_POSTcreate_function('&$m','$m = implode("|", $m);'));

$c implode("#"$_POST); 

$test doubleExplode('|''#'$c);

foreach(
$test as $a => $b) {
    echo 
"$a - $b<br>";
}
?>

  Ответить  
 
 автор: gOFREe   (26.10.2010 в 14:43)   письмо автору
 
   для: sim5   (25.10.2010 в 22:19)
 

Огромное спасибо.

  Ответить  
 
 автор: sim5   (25.10.2010 в 22:19)   письмо автору
 
   для: gOFREe   (25.10.2010 в 22:05)
 

А что наглядного то? Если вы хотите получать строку aaa|1#bbb|1#ccc|1, то для меньшей мороки желательно получать от формы массив, в котором бы значения aaa,1; bbb,1.... были бы его вложенными массивами. Тогда с минимумом затрать получите строку нужную. Если исходить из того, что есть, значит вы должны такой массив получить, и сделать это не сложно, если прочитать в мануале, что функция array_map с указанием null вместо callback-функции как раз и создает такой массив:
<?
echo "<pre>";
//получаем исходный
print_r($_POST);
//создаем массив массивов
$_POST array_map(null$_POST['a'], $_POST['b']);
//результат
print_r($_POST);
//теперь пройтись циклом и....
//либо можно опять функции стандартные использовать
array_walk($_POSTcreate_function('&$m','$m = implode("|", $m);'));
//результат
print_r($_POST);
//конечный продукт
echo implode("#"$_POST);

  Ответить  
 
 автор: gOFREe   (25.10.2010 в 22:05)   письмо автору
 
   для: sim5   (25.10.2010 в 00:13)
 

А наглядно можете пример привести? Заранее спасибо.

  Ответить  
 
 автор: sim5   (25.10.2010 в 00:13)   письмо автору
 
   для: gofree   (24.10.2010 в 23:28)
 

Вы именуйте поля формы так, чтобы это были связанные массивы, и потом за проход можно было объеденить. Ну а решение - создайте массив массивов, который уже затем преобразуйте в строку.

  Ответить  
 
 автор: gofree   (24.10.2010 в 23:28)   письмо автору
 
 

Здравствуйте. Никак не придет в голову как раскидать такой запрос.

Посылаются POST данные из формы, вида:


<input type="text" name="a[]" value="aaa"/>
<input type="text" name="b[]" value="1"/>
<input type="text" name="a[]" value="bbb"/>
<input type="text" name="b[]" value="1"/>
<input type="text" name="a[]" value="ccc"/>
<input type="text" name="b[]" value="1"/>


И задача такая, записать их в одну переменную, в виде:
aaa|1#bbb|1#ccc|1

Насколько я понял тут надо вести расфасовку через for(); и implode();
А как правильно написать..

  Ответить  

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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