Просмотр полной версии : Переход по ссылке с переменной.
Здравствуйте! Надеюсь на помощь, что-то совсем голова кругом, проверяю большой код, устала с документацией. Корректен ли кусок кода:
foreach ($ulink->data as $val){
$string1 = URLpage;
$string2 = '/url/'.$val->data['Id'];
if ($string1 !== $string2){
print "<meta http-equiv='refresh' content='0; url=https://{$_SERVER['SERVER_NAME']}$string2'>";
}
}
Т.е. проверяем, если переменная $string1 не равна переменной $string2, то перенаправляем на $string2, и вот это перенаправление правильно записано?
"<meta http-equiv='refresh' content='0; url=https://{$_SERVER['SERVER_NAME']}$string2'>" или надо так:
"<meta http-equiv='refresh' content='0; url=https://{$_SERVER['SERVER_NAME']}" . $string2 . "'>"
Sonya, это точно в тему "Общие вопросы Javascript"? :blink:
Sonya,
http://redirekt.info/article/redirekt-na-html-s-zaderzhkojj-meta-refresh.html
echo '<meta http-equiv="refresh" content="0;https://'.$_SERVER['SERVER_NAME'].$string2.'">';
перенаправление правильно записано?
Оба случая рабочие - переменные заключенные в двойные кавычки будут обработаны. Второй случай менее нагруженный для парсера, то тогда и применять кавычки надо иначе: двойные в одинарных:
echo '<meta http-equiv="refresh" content="0; url=https://' . $_SERVER['SERVER_NAME'] . $string2 . '">';
Nexus,
laimas,
Большое спасибо!
Да, только сейчас обратила внимание - вместо print лучше здесь echo?
Sonya, почитайте тут про отличия этих функций:
http://php.net/manual/ru/function.print.php
Да, только сейчас обратила внимание - вместо print лучше здесь echo?
ничем echo не лучше за print, почти одно и тоже, тесты на скорость проводили, тоже практически одинаково. И зачем вопросы о php в js ?
ничем echo не лучше за print, почти одно и тоже, тесты на скорость проводили
Причем тут скорости?
ruslan_mart
15.11.2017, 22:08
А почему бы не сделать так?
foreach ($ulink->data as $val){
$string1 = URLpage;
$string2 = '/url/'.$val->data['Id'];
if ($string1 !== $string2){
header("Location: https://{$_SERVER['SERVER_NAME']}$string2");
}
}
ruslan_mart,
не получится если уже был вывод в браузер. Не понятно другое - зачем здесь вообще цикл.
Причем тут скорости?
https://www.google.com/search?q=кто+быстрее+print+или+echo
вот холивары на тему что лучше и быстрее
---
И да, Соня, этот цикл должен быть между тегами <head></head>, если до вывода чего либо в браузер, то лучше используй header('Location: ')
вот холивары на тему что лучше и быстрее
Если вы будете искать выгоду в скорости в одной микросекундной конструкции, то своей проект закончите в следующем тысячелетии. Почитайте лучше о различиях.
Если вы будете искать выгоду в скорости в одной микросекундной конструкции, то своей проект закончите в следующем тысячелетии. Почитайте лучше о различиях. О различиях я читал давно, это вы спрашивали "причем тут скорости", я уже писал, что разницы практически нет между этими конструкциями и что даже по скорости работы они одинаковы...
это вы спрашивали "причем тут скорости", я уже писал
:)
Ну как можно подымать речь о скоростях применительно к операции выполненной (а может и нет, по условию) всего один раз? В контексте кода автора без разницы что будет применено. А вот поведение данных конструкций языка в контексте кода вообще, различается, что в первую очередь и учитывают разработчики.
автор пишет
Да, только сейчас обратила внимание - вместо print лучше здесь echo?
а я ответил, что "разницы между ними не заметите" - с переводом обяснил для вас )), или что вы хотите донести, может покажете где мне лучше использовать эти конструкции в контексте кода с аргументами, которые бы явно указали преимущество той или иной конструкции?
с переводом обяснил для вас
Не надо мне пояснять. А echo и print не одно и тоже, для тех кто это понимает, а не так как вы пишите "разницы между ними не заметите".
может покажете где мне лучше использовать эти конструкции в контексте кода с аргументами, которые бы явно указали преимущество той или иной конструкции?
Хреновый, но пример:
$form_open='<form>';
$input='<input/>';
$form_close='</form>';
//Вариант с print
print $form_open;
print $input;
print $form_close;
//Вариант с echo
echo $form_open,
$input,
$form_close;В кач-ве аргумента: с "echo" конструкцию вывода информации нужны вызвать единожны.
Ну, так объясните в чем глобальная разница и где мне лучше использовать то или другое ? Иначе те кто не понимают так и будут делать ошибки ... )))
--- пример хреновый, честно
$form_open='<form>';
$input='<input/>';
$form_close='</form>';
//Вариант с print
//Вот мой вариант с print
print $form_open.
$input.
$form_close;
//Вариант с echo
echo $form_open,
$input,
$form_close;
Lion777,
print - специальная языковая конструкция, которая может принимать на вход один параметр и печатать его. print всегда возвращает 1, поэтому может быть использован в контексте выражения. Другими словами, print синтаксически является унарным оператором с приоритетом ниже ?: и = и выше and.
echo - это специальная языковая конструкция, которая может принимать на вход произвольное количество аргументов и печатать их. Функция echo не возвращает никаких значений, а потому не может использоваться в контексте выражения.
пример хреновый, честноВы использовали конкатекацию строк в связке с print и считаете, что это более "правильно", чем заюзать echo?
Lion777,
Вы использовали конкатекацию строк в связке с print и считаете, что это более "правильно", чем заюзать echo?
И чем теперь конкатенация вам не угодила ? )))
Lion777,
И чем теперь конкатенация вам не угодила ?
Зачем использовать 3 операции там, где можно использовать одну?
Ну, так объясните в чем глобальная разница и где мне лучше использовать то или другое ?
В этом примере вы не сможете заменить "print" на "echo" не изменяя условия:
if(true and false or print('some text'))
echo PHP_EOL,
'true';
PS. Разница между конструкциями есть, однако если использовать конструкции исключительно для вывода информации, то тут можно использовать любую из них, разница будет незаметна.
Lion777,
Зачем использовать 3 операции там, где можно использовать одну?
вы думаете внутренне в echo делается одна операция? Там не происходит, например, конкантенация или циклом выводятся данные? А телодвижений ровно столько же, что и при echo, только там запятые, а тут точки, а ну да, print на один символ больше чем echo ))
вы думаете внутренне в echo делается одна операция
Кто знает.
Может вы заморочитесь и найдете в исходниках реализацию этой конструкции, чтобы доказать мою неправоту)
И, кстати, да, я думаю, что конкатекация в "echo" не имеет место быть :)
В этом примере вы не сможете заменить "print" на "echo" не изменяя условия:
if(true and false or print('some text'))
echo PHP_EOL,
'true';
Ну в этом примере конечно не смогу ))), но смысла в нем не вижу, ведь print всегда возвращает 1
---
И, кстати, да, я думаю, что конкатекация в "echo" не имеет место быть :) И почему же ? ))) чем она хуже запятых, есть аргументы ? Мы вот счас спорим непонятно о чем, с одной лишь разницей, что я не доказываю что лучше, а говорю о том "что не хуже" (одна не хуже другой)
А телодвижений ровно столько же, что и при echo, только там запятые, а тут точки
Это не точки и запятые - echo в отличии от print может принимать несколько аргументов. Что касается просто "пофиг, выводит да и ладно", конечно можно и так колбасить:
<div><?php print 'text'?></div>
но все таки проще так:
<div><?='text'?></div>
и это будет выведено именно с использованием echo, print тут никак не прокатит так как результатом будет не
<div>text</div>
а
<div>text1</div>
ибо print являясь конструкцией ведет себя как функция, которая всегда возвращает 1. Вот так не получится:
expression ? echo 1 : echo 0
а так прокатит:
expression ? print 1 : print 0
с echo только с выносом конструкции за пределы выражения
echo expression ? 1 : 0
Открывайте матчасть, читайте.
Ахах, начнем с конца )))
конечно так не напишешь
expression ? echo 1 : echo 0
ведь echo ничего не возвращает и в чем тут преимущество ?
echo expression ? 1 : 0;
от
print expression ? 1 : 0; или expression ? print 1 : print 0; ?
Данная конструкция<?='text'?>
это всего лишь альтернативный способ записи echo и конечно если в ней написать <div><?= print 'text'?></div> то выведет text1, ведь это тоже, что написать echo print text;,
ну а если уж так написать <?php print 'text'?> то вся программа пойдет на перекосяк )))... И что вы хотели доказать ? Поумничать ? Преимущество в чем ? Что тот, что тот могу использовать во всех конструкциях, так что лучше то ???
Lion777,
учите матчасть, ибо вы не понимаете о чем говорите. Может после прочтения поймете, чем выгоднее запятая от точки.
Без обид, но вы несете такую пургу, что вести диалог далее нет никакого смысла.
Да какие тут обиды ))), дайте ссылку почитать о точках с запятыми, а то походу весь инет пургу несет )))
Ну а какая может быть еще ссылка как не на официальное руководство создателей http://www.php.net/manual/ru/index.php
Умничать любой может, а вы докажите, что умный и дайте ссылочку о точках с запятыми..
Я не обязан кому-то что-то доказывать, да и желания такового нет. В руководстве все есть - операторы, приоритеты и описание выше упомянутых конструкций. Открывайте соответствующие разделы руководства сами, вникайте.
Ну в этом примере конечно не смогу ))), но смысла в нем не вижу, ведь print всегда возвращает 1
Есть в примере смысл или нет не столь важно.
Важно то, что print можно так применить, а "echo" не получится.
Безусловно, можно изменить условие и избавится от print заюзав "echo", но это уже будет просто игнорирование имеющегося функционала языка.
Все равно, что вместо, к примеру, "preg_match_all" юзать "preg_match" в цикле.
Мы вот счас спорим непонятно о чем, с одной лишь разницей, что я не доказываю что лучше, а говорю о том "что не хуже" (одна не хуже другой)
Моей целью было не доказать, что одна лучше другой, а показать, что различия в конструкциях есть и они (конструкции) в определенных условиях не взаимозаменяемы.
PS. что лучше: ванильное или шоколадное мороженное?) Смысл схож.
Есть в примере смысл или нет не столь важно.
Вот это аргумент, тут и не поспоришь )), единственный аргумент в смысловом использовании print это в тернарном операторе
тип так
условие ? 1 : print 'Ошибочка вышла!';
Но в контексте данной темы было указанно тс, что для нее нету разницы, что использовать, пока профессор laimas не начал поучительно умничать...
laimas_vaikules
16.11.2017, 15:12
PS. что лучше: ванильное или шоколадное мороженное?) Смысл схож.
Вот это аргумент, тут и не поспоришь )), единственный аргумент в смысловом использовании print это в тернарном операторе
тип так
Не пишите фигню. Учите матчасть.
Dilettante_Pro
16.11.2017, 16:00
laimas_vaikules,
- Что за клон? Тролль?
laimas_vaikules
16.11.2017, 17:00
Dilettante_Pro,
Не хочу оффтопить. Но раз уж так просите.
- Что за клон? Тролль?
Поясните, почему?
Dilettante_Pro
16.11.2017, 17:31
laimas_vaikules,
Поясните, почему?
Во-первых, есть достаточно авторитетный участник форума laimas, который активно выступал и в этой теме.
Не хочу оффтопить.
А что тогда такое по вашему ваш пост №36? Типичный троллинг.
laimas_vaikules
16.11.2017, 17:40
Во-первых, есть достаточно авторитетный участник форума laimas, который активно выступал и в этой теме.
и?
А что тогда такое по вашему ваш пост №36? Типичный троллинг.
Все равно не понял, где там троллинг...
Dilettante_Pro,
сынок Вайкуле видимо.
Dilettante_Pro
16.11.2017, 18:01
laimas_vaikules,
Все равно не понял, где там троллинг...
Да, я ошибся - очень ценное, содержательное сообщение. Прошу прощения. Всего хорошего.
laimas_vaikules
16.11.2017, 18:21
Dilettante_Pro,
А чем по Вашему пост №36 отличается от поста №29? Если Вы изучали логику, то по форме и содержанию они идентичны. Просто пост №36 лаконичнее.
А вот пост №41 от авторитетного для Вас пользователя очень похож на троллинг. Именно подростки в онлайн играх вспоминают мамок и папок...
Именно подростки в онлайн играх вспоминают
Не играю в компьютерные игры и возраст не тот, и ничего привлекательного в них не вижу. Так что чутье ваше вас обманывает.
laimas_vaikules
16.11.2017, 19:28
Так что чутье ваше вас обманывает.
Не рекомендую полагаться на чутье. Я привел факт. Судя по манере общения и посыла в посте №41 явно выявлен инфантилизм, что присуще подросткам.
Это логические суждения с вытекающим умозаключением.
Не играю в компьютерные игры и возраст не тот, и ничего привлекательного в них не вижу.
Тогда не пишите чепуху. Думайте головой, пожалуйста.
Мимикрия, я так полагаю в данном случае сознательная, тоже далеко не показатель ума.
Далее в можете режиме монолога продолжать, если охота.
laimas_vaikules
16.11.2017, 19:45
Мимикрия, я так полагаю в данном случае сознательная, тоже далеко не показатель ума.
Я тоже в детстве любил выписывать всякие умные слова, особо не понимая их смысла.
Далее в можете режиме монолога продолжать, если охота.
Все дети реагируют в такой форме, если не могут вести диалог. Например - "Я в домике". Помните? Все играли в подобные игры. Видно Вы еще не выросли из этого возраста.
ruslan_mart
17.11.2017, 11:58
laimas_vaikules, сейчас зайду в админку и чекну айпишник :) Если узнаю, что Вы - фейк, то оригинальный аккаунт пойдёт в баньку. :) Договорились?
laimas_vaikules
17.11.2017, 12:19
ruslan_mart,
Я не против бана, если я нарушил правила форума. Но если вы справедливый администратор, то проанализируете и забаните пользователей, которые не соблюдают правила.
Со своей стороны я нарушений не вижу, пишу так же как и некоторые пользователи выше.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot