За последние 24 часа нас посетили 23373 программиста и 1550 роботов. Сейчас ищут 884 программиста ...

туплю с массивом и функцией

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

  1. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    имеем
    PHP:
    1. function test ($data)
    2. ...
    3. return - все что угодно но надо вывести 2 значения - возвращаем массив ?
    дальше надо заполнить массив

    PHP:
    1. $data = array (
    2.     "column1" =>  "просто текст",
    3.    "column2" =>  test ("фраза которую функция обрабатывает")[0],
    4.    "column3" =>  test ("фраза которую функция обрабатывает")[1],
    2 раза функцию гонять чтото не хочется ..

    использовать

    через переменную вот так пустить

    "column2" => ($peremen = test ("фраза которую функция обрабатывает"))[0], //интересно а сработает ли так .. сейчас буду пробовать
    "column3" => $peremen[1]

    какие еще есть варианты ?
    --- Добавлено ---
    не сработало ...
    --- Добавлено ---
    пока переменную $peremen создаю перед подачей в массив ..
     
  2. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    А почему функцию не гонять два или более раз? Она ведь по сути и создана для того, чтобы использовать её много раз, но при этом не переписывать одинаковые куски кода по сто раз.

    Или у тебя текст один и тот же везде?
     
  3. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    И зачем у тебя в конце переменной квадратные скобки?
     
  4. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    на входе там идет такой текст - ( это я из экселя конверташку делаю в БД )
    "№ документа от <дата>"

    на выходе получаю
    $arr[0] - номер документа
    $arr[1] - дата документа

    эм.. вот тут даже не знаю что ответить

    это вобшето массив =))
     
  5. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    То есть тебе из строки нужно получить номер документа и дату?

    PHP:
    1. $text = "№20500 от 12.02.2017";
    2.  
    3. $param = explode(" от  ", $text);
    4.  
    5. echo $param[0]; //Получаем "№20500"
    6. echo $param[1]; //Получаем "12.02.2017"
    Так нельзя?
     
  6. Slavka

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

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

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    PHP:
    1. $data = array_merge(array ("просто текст","еще текст"),
    2.                     test("фраза которую функция обрабатывает"));
    Если у тебя все ключи это просто columnN, где N - номер, то руками прописывать ключи нет смысла.

    А еще можно записать так:
    PHP:
    1. $data = array_merge(["просто текст","еще текст"],
    2.                     test("фраза которую функция обрабатывает"));
    Мне так больше нравится :)
    --- Добавлено ---
    Да, у array_merge нет предела по количеству параметров. Так тоже можно:
    PHP:
    1. $data = array_merge(["просто текст","еще текст"],
    2.                     test("фраза которую функция обрабатывает"),
    3.                     test("фраза2 которую функция обрабатывает"),
    4.                     test("фраза3 которую функция обрабатывает"),
    5.                     test("фраза4 которую функция обрабатывает"));
     
  8. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    А, я понял! У тебя функция возвращает массив? С телефона не очень удобно читать было =) Так, а чем плохо вызвать функцию один раз перед добавлением в массив?
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Тем, что количество элементов, которое будет возвращено, может меняться, и нужно решение, которое не надо потом переписывать руками при каждом чихе?
     
  10. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    ммммм с мерге может и получится.. - завтра попробую наверное будет чтото такое ( у меня именованые - для pdo =))
    PHP:
    1. $data = array_merge($data,test("фраза которую функция обрабатывает"))
    а функция будет возвращать именованый массив ..с нужными параметрами
    пасиб
     
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Никто не мешает именования пробить потом.
    --- Добавлено ---
    Ну в таком случае и ключи будут там, где надо, да. Главное, чтобы они не пересекались.