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

Форум PHP

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

 

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

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

тема: Сформировать массив
 
 автор: Denandi   (30.12.2013 в 18:38)   письмо автору
 
 

Всем привет!
Что то совсем потерялся, заклинило..мне нужно записать в DB построчно name1[0],name2[0].. потом
name1[1],name2[1] ..и.т.д.
не могу сообразить... как?
Спасибо

форма: name1[]..и.т.д.
пост данные:


array
(
    'mass' => array
    (
        'name1' => array
        (
            0 => '1'
            1 => '2'
            2 => '3'
        )
        'name2' => array
        (
            0 => '100'
            1 => '200'
            2 => '300'
        )
        'name3' => array
        (
            0 => '1'
            1 => '1'
            2 => '2'
        )
        'name4' => array
        (
            0 => '12254'
            1 => '965'
            2 => '6659'
        )
    )


хотел создать новый массив и в цикле вывести, то же не то
...........  обработчик

            $arr = array();
            foreach ($_POST['mass'] as $key => $val) {  
                  //  --- НАЗВАНИЕ  --- 
             
                    foreach ($val as $v) {
                        //  --- МАССИВ (значение)  ---
                       
                        $arr[$key] = $v;
                    }             
            }
...........

  Ответить  
 
 автор: confirm   (31.12.2013 в 10:58)   письмо автору
 
   для: Denandi   (30.12.2013 в 18:38)
 

Если это фиксировано по размеру вложений и так мало, то цикл, тем более со вложенным циклом не нужен:

<?
$sql 
'('.implode(','array_map('current'$_POST['mass'])).'),('.implode(','array_map('next'$_POST['mass'])).'),('.implode(','array_map('end'$_POST['mass'])).')';

//или для PHP >= 5.5
$sql '('.implode(','array_column($_POST['mass'], 0)).'),('.implode(','array_column($_POST['mass'], 1)).'),('.implode(','array_column($_POST['mass'], 2)).')';

//$sql для единственного запроса на запись в базу
//записывать построчно отдельным запросом, это плохо

  Ответить  
 
 автор: Denandi   (31.12.2013 в 15:00)   письмо автору
 
   для: confirm   (31.12.2013 в 10:58)
 

>Если это фиксировано по размеру вложений и так мало, то цикл, тем более со вложенным циклом не нужен:
>
не, вложение неопределенное, чем и усложняет

>//записывать построчно отдельным запросом, это плохо
знаю что гадость редкостная, особенно в мн. числе но я под утро иссяк над решением этой задачи, что вопрос для форума формировал - лиш-бы "получить результат" (потом бы все равно искал др. решение), но на данный момент было пофиг.

Спасибо за решение, я уже нечто подобное побывал утром, правда мозг убил и не достигнув результата, переключился на другую альтернативу, вплоть до построчной записи.каюсь.
Пойду пробовать, что бы в новый год не тащить этот камень..
С наступающим!

  Ответить  
 
 автор: confirm   (02.01.2014 в 09:55)   письмо автору
 
   для: Denandi   (31.12.2013 в 15:00)
 

Что усложняет? Выдергивать значения в промежуточный массив циклами с вложениями, это что? Если в цикле можно получить доступ к элементам, то почему не формировать сразу необходимое без промежуточного сохранения?

В версиях 5.5 и старше это сделать легко проходом единственного цикла while(), количество итераций которого будет задавать количество элементов первого вложения, если вложения это индексные массивы, или же массив ключей первого вложения, если вложения это ассоциативные массивы. В цикле получаем необходимые колонки по значениям итераций.
Это с условием, что длина всех вхождений одинакова, в противном случае требуется проверка этого условия.

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

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

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