За последние 24 часа нас посетили 22496 программистов и 1008 роботов. Сейчас ищут 674 программиста ...

Выборка из массива

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

  1. Yankovitz

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

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Добрый вечер. Помогите пожалуйста сделать выборку из массива. Упрощённо массив выглядит так:
    Код (Text):
    1. Array (
    2. [0] => Array ( [0] => Наименование [1] => Марка [2] => Диаметр, мм )
    3. [1] => Array ( [0] => Труба из штамповой стали [1] => Х12Ф1 [2] => 3 )
    4. [2] => Array ( [0] => Труба из штамповой стали [1] => 7Х3 [2] => 4 )
    5. [3] => Array ( [0] => Труба из штамповой стали [1] => 4Х5В2ФС [2] => 5 )
    6. [4] => Array ( [0] => Труба из штамповой стали [1] => 5ХГМ [2] => 6 )
    7. [5] => Array ( [0] => Труба из штамповой стали [1] => 6ХВ2С [2] => 6 )
    8. )
    Выборку необходимо делать по одному или сразу нескольким значениям. Буду благодарен за любую наводку. На выходе при выборке по значению "Труба из штамповой стали", должен получаться срез массива, в данном случае, с 1 по 5 индекс. Если выборка по "Труба из штамповой стали" + Диаметр, мм - "6". Нужно получить срез в данном примере элементы с индексами 4 и 5.
     
  2. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
  3. Babka_Gadalka

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

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    @Yankovitz БД юзать можно, место велосипедов
     
  4. Yankovitz

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

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Да, я знаю. К сожалению, в данном случае возможна только работа с массивом
     
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Yankovitz, вот, например, простейший вариант:
    PHP:
    1. $arr = [
    2.     ['Наименование', 'Марка', 'Диаметр, мм'],
    3.     ['Труба из штамповой стали', 'Х12Ф1', 3],
    4.     ['Труба из штамповой стали', '7Х3', 4],
    5.     ['Труба из штамповой стали', '4Х5В2ФС', 5],
    6.     ['Труба из штамповой стали', '5ХГМ', 6],
    7.     ['Труба из штамповой стали', '6ХВ2С', 6],
    8. ];
    9.  
    10. function myFilter($item) {
    11.     global $filter;
    12.     $result = true;
    13.     foreach($filter as $key => $value) {
    14.         if(is_null($value)) { continue; }
    15.         if($item[$key] != $value) {
    16.             $result = false;
    17.         }
    18.     }
    19.     return $result;
    20. }
    21.  
    22. $filter = ['Труба из штамповой стали', null, null];
    23. $aResult = array_filter($arr, 'myFilter');
    24. $filter = ['Труба из штамповой стали', null, 6];
    25. $aResult2 = array_filter($arr, 'myFilter');
    26. var_dump($aResult, $aResult2);
     
    Yankovitz нравится это.
  6. Yankovitz

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

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Это вообще супер круто. В 2 раза короче чем у меня, да ещё с мульти-поддержкой :)