За последние 24 часа нас посетил 16231 программист и 1666 роботов. Сейчас ищут 935 программистов ...

Функция с массивом

Тема в разделе "Прочие вопросы по PHP", создана пользователем Vadim-S, 18 май 2014.

  1. Vadim-S

    Vadim-S Новичок

    С нами с:
    18 май 2014
    Сообщения:
    2
    Симпатии:
    0
    Подскажите, пожалуйста, как обратиться к значению функции, если она должна вернуть массив значений?
    Код (Text):
    1. function getFieldName($idx) {
    2. $nr = 1;
    3. while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
    4. if ($nr=$idx) {
    5. $field = array(name=>$row['COLUMN_COMMENT'], type=>$row['DATA_TYPE'],href=>$row['REFERENCED_TABLE_NAME']);
    6. break;
    7. };
    8. $nr++;
    9. }
    10. return $field;
    11. };
    Обращение вида: getFieldName(1)[0] или getFieldName(1)(0) вызывает ошибку.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нельзя так. в переменную результат надо засунуть.
    $arr = getFieldName(1);
    echo $arr[0];
     
  3. Vadim-S

    Vadim-S Новичок

    С нами с:
    18 май 2014
    Сообщения:
    2
    Симпатии:
    0
    Почему нельзя сразу обратиться аналогично к функции, без промежуточной переменной?
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Потому что это функция. Покажи язык где можно.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно при большом желании. но не в такой форме и не так и не за чем.
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Тебя ничего не смущает?
     
  7. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Везде, кроме пыха, к слову. Тоже об это часто по-привычке ноги сбивал. Просто надо смириться, пых не может так.
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    вообщето уже можно:
     
  9. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Эт пока еще 5.4 сдвинет 5.2 на хостингах... Но да, круто.
     
  10. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Можно в питоне и насколько помню в руби. Но там все в виде объектов сделано поэтому назвать чисто функцией не правильно.

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

    Молодцы, но чуток опоздали.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Куда опоздали?
     
  12. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ужо не мейнстрим? :) Тогда и с ООП пыхотворцы опоздали ппц как :)
     
  13. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    как по мне. так это вообще нах ненужно.
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я думаю это юзабельно в ООП
     
  15. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Это и без ООП юзабельно оч. Обращаться напрямую к результату функции через ее вызов как к полноценной переменной/объекту это крайне ОК.
     
  16. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    это провоцирует писать рукожопов такой код (особенно когда код функции лежит нерядом. а че. удобно. и работает. и пох что будет запрос в бд на каждый чих)
    Код (PHP):
    1. function getAllValues() {
    2.  return Db::getRows('SELECT val FROM table ...');
    3. }
    4. showMaxValue( getAllValues()[0], getAllvalues()[1] );// а если это еще в цикл завернуть 8-[        
    а раньше, даже рукожопу пришлось бы сначала получить результат, а уже потом его юзать. труднее было выстрелить себе в ногу.
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это если используются итераторы. В противном случае это жесть и трата ресурсов.