За последние 24 часа нас посетили 60007 программистов и 1771 робот. Сейчас ищут 1970 программистов ...

функции и видимость переменных

Тема в разделе "PHP для новичков", создана пользователем simple, 8 окт 2010.

  1. simple

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

    С нами с:
    17 сен 2010
    Сообщения:
    56
    Симпатии:
    0
    есть 2 массива чисел обьявленных в главной программе, одна функция должна их обрабатывать и отдавать обратно в программу для дальнейших вычеслений, но все вычисления отсаются в нутри функции из-за локальной переменной, скажите как тут поступить, очень не хочется использовать global :cry:
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Передавать их функции в параметре и отдавать в return
     
  3. simple

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

    С нами с:
    17 сен 2010
    Сообщения:
    56
    Симпатии:
    0
    а можно пример?
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    PHP:
    1. <?
    2. function a($a) {
    3. $a='пчелка говорит: '.implode (' и ', $a);
    4. return $a;
    5. }
    6.  
    7. $zpp=array('bububu', 'jujuju');
    8. echo a($zpp);
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    ой, я туплю. Возвращать только 1 массив можно. Сорри.

    Тогда глобал.

    приведи пример того, что хочешь сделать, может тебе посоветуют что-то
     
  6. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    function func($array_a, $array_b) { return array($array_a, $array_b); }
    lists($arr_a, $arr_b) = func($arr_a, $arr_b);

    Или же по ссылке

    function func(&$array_a, &$array_b) { }
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    MiksIr

    Все верно, но потребуются дополнительные действия по разбору этого массива)))
     
  8. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    А я написал второй строчкой все дополнительные действия. Но вообще в данном случае по ссылке передавать наиболее оптимально - зачем копировать данные туда-сюда.
     
  9. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    оптимально - это чтобы вообще такая задача не стояла)))
     
  10. simple

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

    С нами с:
    17 сен 2010
    Сообщения:
    56
    Симпатии:
    0
    Да пример с сылками на переменные мне подходит. Спасибо за помощь =)
     
  11. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Забавная задача - передача неопределенного количества аргументов по ссылке =)

    PHP:
    1. <?
    2.  
    3. function caller() {};
    4. caller(&$foo, &$bar);
    5.  
    6. ?>
    После чего мы получим по шее от РНР за это.
     
  12. simple

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

    С нами с:
    17 сен 2010
    Сообщения:
    56
    Симпатии:
    0
    а как эти ссылки на переменные с точки зрения безопасноти себя ведут, можно ли какой нить вред через них сделать?