За последние 24 часа нас посетили 23674 программиста и 1545 роботов. Сейчас ищут 1000 программистов ...

поиск в массиве

Тема в разделе "PHP для новичков", создана пользователем Slavka, 18 янв 2017.

  1. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    Имеются таблицы с данными ( не в бд )
    в основном имена столбцов одинаковые и я их впихнул в массив
    PHP:
    1. $columns = array (
    2.           "col1"=>"№",
    3.           "col2"=>"Подразделение ОСП",
    4.           "col3"=>"Регистрационный номер ИП",  
    5.           "col4"=>"Дата возбуждения",
    6.           "col5"=>"Взыскатель",  
    7.           "col6"=>"Должник"
    8. );
    но в некоторых таблицах 2 столбец обозван вот так
    PHP:
    1.   "col2"=>"Наименование ОСП"
    потом я в завимисимости от названия столбца через
    PHP:
    1. array_search ( $column_name, $columns)
    получаю $key Этого стобца...
    все красиво все хорошо пока не натыкаюсь на col2 -

    пытался записать его 2 раза в массив- достается поиском только последний первый col2 игнорируется..

    так тоже игнорируется "col2"=>array ("Подразделение ОСП","Наименование ОСП")

    есть варианты как можно найти этот столбец ?

    нашел способ с array_filter но чтото он мне не особо подходит .. я же в фунцию передаю значение а не ключ ..
     
    #1 Slavka, 18 янв 2017
    Последнее редактирование модератором: 18 янв 2017
  2. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Вот тут не совсем понятно : "col2"=>array ("Подразделение ОСП","Наименование ОСП") у вас условие: БОЛЬШЕ ИЛИ РАВНО.
    Попробуйте так:
    $array - Это к примеру ваш массив с данными,


    Код (Text):
    1. $col2 = "Наименование ОСП";
    2. if (in_array($col2, $array)) {
    3.  
    4. Тут выполняем необходимые действия при обнаружении значения в массиве.
    5.  
    6.  
    7. }
     
  3. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    Это бред, конечно. Проверь значение два раза.
    --- Добавлено ---
    @ArsNet, где тут больше или равно?
     
  4. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    PHP:
    1. $columns = array (
    2. "col1"=>"№",
    3. "col2"=>array ("Подразделение ОСП","Наименование ОСП")
    4. "col3"=>"Регистрационный номер ИП",
    5. "col4"=>"Дата возбуждения",
    6. "col5"=>"Взыскатель",
    7. "col6"=>"Должник"
    8. );
    вот так это выглядит полностью =))
    сейчас сделаю тестовую среду
     
    #4 Slavka, 18 янв 2017
    Последнее редактирование модератором: 18 янв 2017
  5. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Пробуйте, должно получиться через in_array
     
  6. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    не очень понял чем проверить
     
  7. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @Slavka, ну ты ищешь вот
    PHP:
    1. $column_name = "Подразделение ОСП";
    2. array_search ( $column_name, $columns)
    после проверяй, вернулся ли результат. Если не вернулся - переопределяешь переменную и ищешь дальше
    PHP:
    1. /*тут проверка ответа*/
    2. $column_name = "Подразделение ОСП";
    3. array_search ( $column_name, $columns)
     
  8. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    хе вохможно я немного не праивльно понял - вот что сотворил .. и пока вроде костыль работает - тут вообше получается не скрипт а один костыль =)))

    то количество столбцов определяется не правильно .. то строки сдвинуты ..


    вот что вышло в итоге

    PHP:
    1.             $arr_column = array_search ( trim($cell->getCalculatedValue()), $columns);
    2.          if ($arr_column =="") {
    3.               if (trim($cell->getCalculatedValue()== "Наименование ОСП")){
    4.             array_push( $columns_right, "col2");
    5.               }
    6.          }
    7.          else array_push( $columns_right, $arr_column);
    8.          }
    спасибо
     
  9. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @Slavka, тут костыль начинается с самого выбора типа хранения данных :)
     
  10. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    хе .. посмотрел бы я каким образом суды предоставляли бы данные о том что у них в работе а что завершено в постгришке и с такими же столбцами как мне надо =))