А как обявить переменную без присвоения ?

Статус
В этой теме нельзя размещать новые ответы.
Хм, вообще непонятно, зачем определять переменную без инициализации? Типа вначале функции собрать все используемые переменные? Ога, хорошее решение, особенно если функция строк эдак 300-500. Переменные надо объявлять, инициализировать стандартным значением и сразу использовать(или объявлять и инициализировать присваниванием чего-либо), иначе потом будет гемморно искать ошибки.
 
Angerslave
Перед циклом к примеру определить, где будет дописывающие присвоение .=
 
Кощей, вынь бананы из ушей и да услышь говорящих

Еще раз:
в PHP нет деклараций переменных
много лет назад синтаксис создавался в рассчете на то, что переменные не надо инициализировать

единственный выход - инициализация значением

не нравится - пиши на другом языке
 
grigori,
переменные не надо инициализировать
по-моему ты тут описку допустил

-~{}~ 27.08.08 20:51:

Кощей
Перед циклом к примеру определить, где будет дописывающие присвоение .=
ты прикидываешься, или реально такой? если ты перед таким циклом из эстетических соображений не хочешь сделать $str=''; то как ты терпишь for цикл такого вида:
PHP:
for($i= 0; $i < 10; $i++)
тут же тоже ужасное с точки зрения эстетики присвоение $i= 0;
 
dimagolov
это другое) тут присваивать начальное значение нужно впринципе, чтобы указать откуда начинать перебор, здесь в нем есть нужда)

А вот тут нет:

$content = null;
$content .= $this->site->heads();
$content .= $this->site->$module();

Вот и без этого "= null " ругается :(
 
Кощей
А все почему? Потому что надо писать на классах. там можно обьявлять и не назначать)
class a
{
public $b;
}


И еще так не пробовал?

$content = $this->site->heads();
$content .= $this->site->$module();
 
$content = null;
$content .= $this->site->heads();
$content .= $this->site->$module();
давай, малыш, я объясню тебе логику твоего кода, раз ты не понимаешь её сам

2-я строка - к имеющейся строке с помощью строкой операции "конкатенация" прибивается результат выполнения метода $this->site->heads()
3-я строка - к имеющейся строке с помощью строкой операции "конкатенация" прибивается результат выполнения метода $this->site->$module()

ключевое слово выделено болдом.
если ты не хочешь добавлять к уже существующей строке ещё строку, тогда измени код вот так и радовайся:

$content = $this->site->heads();
$content .= $this->site->$module();
 
Кощей хотел как лучше, а получилось как всегда , не подумав. :)
 
zerkms
Я null не пробовал вообще-то, мне тут так посоветовали. Впринципе я так всегда и делал, первый раз присваивание, дальше конкатенация (забыл уже словечко, спасибо). Так вот для меня в такой логике теряется структура, вот чем та первая строка отличается от остальных идущих дальше, она из одного логического блока с ними, однако отличается методом присвоения, таким образом выпадает из блока.
 
Кощей
http://www.php.net/manual/en/language.variables.php
как говорится... читать до полного просветления =)

если такое не устраивает - как уже было сказано
пиши на другом языке

-~{}~ 28.08.08 12:20:

чем та первая строка отличается от остальных
тем что в первой строке происходит операция инициализации строковой переменной строковым значением, а в следущих - присвоение существующей строковой переменной значения, полученного в результате конкатенации ее текущего значения со строкой справа от оператора .=

зы:
не забывай, что $a .= $b - сокращенная запись $a = $a . $b
соответственно, отсутствие инициализации $a до первой такой операции обеспечивается в php отсутствием строгой типизации и расширенными возможностями приведения типов (в том числе и undefined => string с сопутствующим notice'ом).
 
StUV
Понятно.
Хорошо вы меня посветили, все)
Выходит что правильный способ это
$a = "";
$a .= "example text";

Это синтаксис, нужно вспринимать как есть
 
Кощей
зачем создавать пустую строку и прибивать к ней текст? почему сразу нельзя передать то, что нужно
 
$a = 'текст';
$b = 'текст';
$c = 'текст';
...
много кода
...
$a .= 'обсолютно другой текст';
$b = '';
$b .= 'обсолютно другой текст';
$c = 'обсолютно другой текст';

вариант с $a потенциально опасен
 
AmdY - это кошей особо опасен, береги свой моск

-~{}~ 28.08.08 19:39:

Кощей - у тебя свои плантации?
 
да, брат. Вся сила в яйцах, куриных, молодецких с селеном.
 
Тема закрыта.

Проблемы личного характера и бессмысленные споры между участниками не являются предметом обсуждения форума.
Обсуждайте их в привате.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху