Как получить элемент массива?

Тема в разделе "PHP", создана пользователем drawing4, 19 фев 2011.

Модераторы: latteo
  1. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    Функция возвращает массив. Возможно ли сразу взять элемент этого массива?

    PHP:
    function f() {

    return 
    $array
    }

    $b=f(); // вернет массив в переменную $b

    $c=$b[1]; // получаем второй элемент массива

    Как получить значение в $c сразу из функции? Это возможно вообще?
     
  2. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    если без назначения временной переменной то так:

    PHP:
    $c=next(f());
    также ф-и current, end - для первого или последнего элемента
     
    drawing4 нравится это.
  3. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Скажем прямо - нативной поддержки требуемого нет и не планируется. Удивительные костыли можно подсмотреть тут :)
     
    drawing4 нравится это.
  4. VandJ

    VandJ

    Регистр.:
    8 апр 2008
    Сообщения:
    319
    Симпатии:
    124
    A если доработать саму функцию, примерно так:
    PHP:
    function f($g) { 
    if (
    $g==0) {
    return 
    $array;} 
    else {    
    return 
    $array[$g];}

    $c f(0); //весь массив
    $c f(1);   //1 элемент
     
  5. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Ноль передавать так нельзя. Массивы считаются от нуля. Но это же пхп. Нужно ничего не передавать, если нужен полный массив.
    PHP:
    function f($g=false) { 
    if (
    $g===false) {
    return 
    $array;} 
    else {    
    return 
    $array[$g];}

    $c f(); //весь массив
    $c f(1);   //1 элемент
     
  6. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37

    Так не пойдет, смысл в том чтобы сделать код более изящным, а не переписывать уже написанные (не мной) функции
     
  7. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Тогда вам надо не на php писать.
    Пхп фишки вида $item=f()[1] - не поддерживает.

    пхп может быть многолословен, зато он прост. Для ценителей магического кода нужно выбирать другой язык типа Ruby

    И если смотреть на стартовый топик и на это заявление, то напрашивается вывод, что это, то есть "не изменяя/оборачивая/переписывая метод, изменить его поведение прямо в нем" - вообще нельзя сделать ни в каком языке. Разве что подменить. Но это еще возможно в случае с классами (соорудить декоратор), а classkit юзать чревато неприятностями.
     
  8. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    Самый простой метод который видится мне это написание, подключение и использование своего класса, с требуемым набором функций