За последние 24 часа нас посетил 30541 программист и 1800 роботов. Сейчас ищут 944 программиста ...

Получение нескольких массивов из исходного

Тема в разделе "PHP для новичков", создана пользователем Yankovitz, 25 фев 2019.

  1. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Есть массив:
    PHP:
    1.     [0] => Array ( [0] => Наименование [1] => ГОСТ [2] => Марка )
    2.     [1] => Array ( [0] => Биметаллическая лента [1] => ГОСТ 10533-86 [2] => 20НГ )
    3.     [2] => Array ( [0] => Биметаллическая лента [1] => ГОСТ 10533-86 [2] => 24НХ )
    4.     [3] => Array ( [0] => Биметаллическая лента [1] => ГОСТ 10533-86 [2] => 45НХ )
    5.     [4] => Array ( [0] => Биметаллическая лента [1] => ГОСТ 10533-86 [2] => 46Н )
    6.     [5] => Array ( [0] => Биметаллическая лента [1] => ГОСТ 10533-86 [2] => 75ГНД )
    7. )
    На выходе требуется получить массивы со списком всех значений конкретного индекса. В данном случае 3 массива. Прошу помощи...
     
  2. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    @Yankovitz а где этот конкретный индекс?
     
  3. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Я имел в виду, что массивы должны получаться такого формата:
    $array[0] = array( 'Наименование', 'Биметаллическая лента' );
    $array[1] = array( 'ГОСТ 10533-86' );
    $array[2] = array( '20НГ', '24НХ', '45НХ' );
    То есть, индексы получаемого массива должны совпадать с индексами, которые есть в исходных.
     
  4. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    @Yankovitz У вас же везде гост одинаковый ГОСТ 10533-86, получится пять параметров. Как у вас три получилось? Я к тому что где эти индексы то?

    Вы предлагаете решить такую задачу сейчас: есть 5 котят, все желтого цвета. Задача выберите трех котят весом больше 10 килограмм.

    Где детонатор???
     
    #4 Artur_hopf, 25 фев 2019
    Последнее редактирование: 25 фев 2019
    MouseZver нравится это.
  5. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Про гост я понимаю, это вопрос второстепенный. Например, у элемента за значением "Наименование" индекс - 0. Он идёт в array[0], у элемента со значением "ГОСТ 10533-86" индекс равен 1, а значит идёт в массив array[1]
    --- Добавлено ---
    Хорошо, нужно просто получить на выходе:
    Код (Text):
    1. $array[0] = array( 'Наименование', 'Биметаллическая лента', 'Биметаллическая лента', 'Биметаллическая лента', 'Биметаллическая лента' );
    2. $array[1] = array( 'ГОСТ 10533-86', 'ГОСТ 10533-86', 'ГОСТ 10533-86', 'ГОСТ 10533-86', 'ГОСТ 10533-86' );
    3. $array[2] = array( '20НГ', '24НХ', '45НХ', '46Н', '75ГНД' );
     
  6. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    По вашей логике получается так:
    PHP:
    1. $array[0] = array( 'Наименование', 'Биметаллическая лента', 'Биметаллическая лента', 'Биметаллическая лента', 'Биметаллическая лента', 'Биметаллическая лента');
    2. $array[1] = array( 'ГОСТ', 'ГОСТ 10533-86', 'ГОСТ 10533-86', 'ГОСТ 10533-86', 'ГОСТ 10533-86', 'ГОСТ 10533-86' );
    3. $array[2] = array( '20НГ', '24НХ', '45НХ', '46Н', '75ГНД');
    Это то что вам нужно? o_O
    Не знаю зачем вам это, сейчас попробую.
     
  7. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    У меня массив данных и нужно в табличку всё это организовать с фильтром и выпадающим списком. Именно на выпадающем списке застопорился.
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
  9. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    Вот с этого и начинайте следующий раз не надо в никакой массив ничего пихать, я так понимаю вам нужен select c параметрами options?
     
  10. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Да, всё верно.
     
  11. Babka_Gadalka

    Babka_Gadalka Активный пользователь

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    http://sandbox.onlinephpfunctions.com/code/dbfab5910ffebd7d0346aa24c0f5ea526d447a4a
     
    Yankovitz нравится это.
  12. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Уже горячо. Дело в том, что заранее неизвестно, сколько будет колонок. Может добавляться ещё одна или две. Кроме того, последовательность колонок разнится.
     
  13. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    @Yankovitz на скорую руку, в селекты свои вставте их:
    PHP:
    1. $test = [
    2.     ['Наименование','ГОСТ','Марка'],
    3.     ['Биметаллическая лента', 'ГОСТ 10533-86', '20НГ'],
    4.     ['Биметаллическая лента', 'ГОСТ 10533-86', '24НХ'],
    5.     ['Биметаллическая лента', 'ГОСТ 10533-86', '45НХ'],
    6.     ['Биметаллическая лента', 'ГОСТ 10533-86', '46Н'],
    7.     ['Биметаллическая лента', 'ГОСТ 10533-86', '75ГНД']
    8. ];
    9. $a = '';  $b = ''; $c = '';
    10. foreach ($test as $val) {
    11.     if($key === 0){
    12.         $a .= '<option selected disabled>'.$val[0].'</option>';
    13.         $b .= '<option selected disabled>'.$val[1].'</option>';
    14.         $c .= '<option selected disabled>'.$val[2].'</option>';
    15.     }else{
    16.         $a .='<option >'.$val[0].'</option>';
    17.         $b .='<option >'.$val[1].'</option>';
    18.         $c .='<option >'.$val[2].'</option>';
    19.     }
    20.     $result = [$a,$b,$c];
    21.  
    22. }
    23.  
    24. foreach ($result as $val) {
    25.    echo '<select>'.$val.'</select>';
    26. }
     
    Yankovitz нравится это.
  14. Babka_Gadalka

    Babka_Gadalka Активный пользователь

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    PHP:
    1. ['Наименование','ГОСТ','Марка', ...еще ],
    Нулевой индекс использовать как основу над созданием контента.
     
  15. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Большое спасибо всем. Сделал так:
    Код (Text):
    1.  
    2. $a = [
    3.     [ 'Наименование', 'ГОСТ', 'Марка' ],
    4.     [ 'Биметаллическая лента', 'ГОСТ 10533-86', '20НГ' ],
    5.     [ 'Биметаллическая лента', 'ГОСТ 10533-86', '24НХ' ],
    6.     [ 'Биметаллическая лента', 'ГОСТ 10533-86', '45НХ' ],
    7.     [ 'Биметаллическая лента', 'ГОСТ 10533-86', '46Н' ],
    8.     [ 'Биметаллическая лента', 'ГОСТ 10533-86', '75ГНД' ],
    9. ];
    10.  
    11. foreach ( $a as $i => $v ) {
    12.     $array[$i] = array_unique( array_column( $a, $i ) );
    13. }
    А селекты, уже дело техники.