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

Статус
В этой теме нельзя размещать новые ответы.

Angerslave

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

Кощей

if(!$needle) die("ooh");
Angerslave
Перед циклом к примеру определить, где будет дописывающие присвоение .=
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Кощей, вынь бананы из ушей и да услышь говорящих

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

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

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

dimagolov

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

-~{}~ 27.08.08 20:51:

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

Кощей

if(!$needle) die("ooh");
dimagolov
это другое) тут присваивать начальное значение нужно впринципе, чтобы указать откуда начинать перебор, здесь в нем есть нужда)

А вот тут нет:

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

Вот и без этого "= null " ругается :(
 

HraKK

Мудак
Команда форума
Кощей
А все почему? Потому что надо писать на классах. там можно обьявлять и не назначать)
class a
{
public $b;
}


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

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

zerkms

TDD infected
Команда форума
$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();
 

nirex

Новичок
Кощей хотел как лучше, а получилось как всегда , не подумав. :)
 

Кощей

if(!$needle) die("ooh");
zerkms
Я null не пробовал вообще-то, мне тут так посоветовали. Впринципе я так всегда и делал, первый раз присваивание, дальше конкатенация (забыл уже словечко, спасибо). Так вот для меня в такой логике теряется структура, вот чем та первая строка отличается от остальных идущих дальше, она из одного логического блока с ними, однако отличается методом присвоения, таким образом выпадает из блока.
 

StUV

Rotaredom
Кощей
http://www.php.net/manual/en/language.variables.php
как говорится... читать до полного просветления =)

если такое не устраивает - как уже было сказано
пиши на другом языке
-~{}~ 28.08.08 12:20:

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

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

Кощей

if(!$needle) die("ooh");
StUV
Понятно.
Хорошо вы меня посветили, все)
Выходит что правильный способ это
$a = "";
$a .= "example text";

Это синтаксис, нужно вспринимать как есть
 

zerkms

TDD infected
Команда форума
Кощей
зачем создавать пустую строку и прибивать к ней текст? почему сразу нельзя передать то, что нужно
 

AmdY

Пью пиво
Команда форума
$a = 'текст';
$b = 'текст';
$c = 'текст';
...
много кода
...
$a .= 'обсолютно другой текст';
$b = '';
$b .= 'обсолютно другой текст';
$c = 'обсолютно другой текст';

вариант с $a потенциально опасен
 

ustas

Элекомист №1
AmdY - это кошей особо опасен, береги свой моск

-~{}~ 28.08.08 19:39:

Кощей - у тебя свои плантации?
 

ustas

Элекомист №1
да, брат. Вся сила в яйцах, куриных, молодецких с селеном.
 

HraKK

Мудак
Команда форума
Тема закрыта.

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