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

Про амперсанд в начале функции

Тема в разделе "PHP для новичков", создана пользователем borus, 16 май 2012.

  1. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Здравствуйте.

    Что означает такой вызов функции, а точнее наличие амперсанда в нем:
    $app = &JFactory::getApplication();
    Что это дает?
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    амперсандом передается ссылка на то, что идет после него.
     
  3. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    В данном случае, почему бы не передовать просто функцию вместо ссылки на неё?
     
  4. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Пробуй без амперсанда, разницы не должно быть, если там объект возвращается методом.
    Скорее всего он для для того, чтобы метод возвращал один и тот же объект, а не копию каждый раз. Такое было еще в пхп 4. Потому, чтобы явно указать, что тебе не нужно копирования объекта - ставили амперсанд, тогда объект возвращался по ссылке, а не по значению.
    В пхп 5 указывать амперсанд не нужно, так как объекты и так всегда передаются по ссылке.
     
  5. amijin

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

    С нами с:
    4 июл 2012
    Сообщения:
    4
    Симпатии:
    0
    <?
    session_register('view1count');
    session_register('view2count');
    session_register('view3count');
    session_register('view4count');
    ?>
    <?
    echo " <html><head><teatle>Счетчик посещений web-страниц<br></teatle></head></body>";
    if (isset($_GET['whichpage'])) {
    echo"<b>В данный момент вы просматриваете страницу
    $_GET[whichpage].</b><br><br>\n";
    //$_SESSION["view".$_GET['whichpage']."count"]++;
    }
    for ($i=1; $i<=4; $i++) {
    if (isset($_GET['whichpage'])==$i) {
    echo "<b><a href=\"sessions.php?".session_id()."&whichpage=$i\">
    Страница $i</a></b>";
    } else {
    echo "<a href=\"session.php?".session_id()."&whichpage=$i\">Страница $i</a>";
    }
    if (!isset($_SESSION["view".$i."count"])) $_SESSION["view".$i."count"]=0;
    echo ", которую вы смотрели".$_SESSION["view".$i."count"]." раз.<br>\n";

    }
    echo "\n\n<br><br>\n\n";
    echo "</body></html>";
    Здравствуйте люди добрые, подскажите пжлста чайнику:
    1. как понять if (isset($_GET['whichpage'])==$i) , точнее как можно сравнивать whichpage с целочисленным значением? Где переменной whichpage присваивается целочисленное значение?
    2 .Как в этом коде понимать запись "<b><a href=\"sessions.php?".session_id()."&whichpage=$i\"> ,точнее как понять &whichpage=$i . что означает данный амперсанд &
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. if (isset($_GET['whichpage'])==$i) 
    Бессмыслица какая-то. Тут результат функции isset() сравнивается с числом. Результат if() на каждой итерации будет одинаковый. Наверно, там должно было быть
    Код (PHP):
    1. if ($_GET['whichpage']==$i) 
    Переменным $_GET значения присваиваются перед запуском скрипта. Это данные из запроса, которые отправил браузер.

    & в строке адреса отделяет несколько переменных, передаваемых браузером скрипту.
     
  7. amijin

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

    С нами с:
    4 июл 2012
    Сообщения:
    4
    Симпатии:
    0
    Вы правы, код работает и без isset, но почему тогда не выбивало ошибку, когда сравнивало булево значение с обычным числом ?
    p.s. спасибо за ответ.
     
  8. uorypm

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

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    Доброго времени суток тебе.
    1. Читай про строго и нестрого типизированные языки
    2. Читай про приведение типов
    P.S. Больше такие вопросы не спрашивай
     
  9. amijin

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

    С нами с:
    4 июл 2012
    Сообщения:
    4
    Симпатии:
    0
    извиняюсь за глупые вопросы. Я только учусь, еще совсем чайник, не судите строго. :)
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Есть даже табличка что он считает тру или фалс в зависимости от обстоятельств при одном и том же значении.
     
  11. amijin

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

    С нами с:
    4 июл 2012
    Сообщения:
    4
    Симпатии:
    0
    А можно ссылочку на табличку?
    Спасибо.
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768