Jump to content
  • 0

Как вывести значение для переменной


proflead
 Share

Question

Все привет,

Как вывести значение переменной, если ее значение появляется после вывода. На примере.

Код:


<tr>
<td <?=$colspan?>>Текст</td>
</tr>
<tr>
<?php
$x=1;

if($x==0)
$colspan="";
else
$colspan="colspan='2'";
?>
</tr>
<tr>

Моя переменная, во время вывода, пустая, поэтому ничего не выводится. Затем мы делаем проверку и теперь она содержит значение. Вот как сделать так, чтобы это значение вывелось выше условия?

Надеюсь объяснил понятно.

Спасибо.

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

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

1. Смотрим какие данные хочет увидеть пользователь (разбираем url)

2. Получаем все нужные данные (из БД или ещё откуда)

3. Строим страницу из кусочков-шаблонов, куда вставляем данные полученные в п. 2.

Или, как вариант, попробуйте освоить какой-нибудь MVC-based frameworks: CodeIgniter, Yii, Kohana et cet?ra и т.п.

Edited by Быколай
Link to comment
Share on other sites

  • 0

К сожалению, такой вариант не подойдет, так как переменная $x должен быть за функцией и она будет определена только после вывода переменной $colspan.

ну так а что мешает сделать вот так?


<tr>
<td <?=Col($x);?>>Текст</td>
</tr>
<tr>
<?php
$x=1;
function Col($x) {
if($x==0)
$colspan="";
else
$colspan="colspan='2'";
return $colspan;
}
?>
</tr>
<tr>

или я чего-то не понял?

Link to comment
Share on other sites

  • 0

К сожалению, такой вариант не подойдет, так как переменная $x должен быть за функцией и она будет определена только после вывода переменной $colspan.

ну так а что мешает сделать вот так?


<tr>
<td <?=Col($x);?>>Текст</td>
</tr>
<tr>
<?php
$x=1;
function Col($x) {
if($x==0)
$colspan="";
else
$colspan="colspan='2'";
return $colspan;
}
?>
</tr>
<tr>

или я чего-то не понял?

$x идет после $colspan и заранее не известно

К сожалению, такой вариант не подойдет, так как переменная $x должен быть за функцией и она будет определена только после вывода переменной $colspan.

ну так а что мешает сделать вот так?


<tr>
<td <?=Col($x);?>>Текст</td>
</tr>
<tr>
<?php
$x=1;
function Col($x) {
if($x==0)
$colspan="";
else
$colspan="colspan='2'";
return $colspan;
}
?>
</tr>
<tr>

или я чего-то не понял?

$x идет после $colspan и заранее не известно

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

1. Смотрим какие данные хочет увидеть пользователь (разбираем url)

2. Получаем все нужные данные (из БД или ещё откуда)

3. Строим страницу из кусочков-шаблонов, куда вставляем данные полученные в п. 2.

Или, как вариант, попробуйте освоить какой-нибудь MVC-based frameworks: CodeIgniter, Yii, Kohana et cet?ra и т.п.

Согласен, не правильно, я пытаюсь сделать запил в написанном приложении. Что я пытаюсь сделать.

Есть таблица, в ней есть две строки. 1 строка содержит одну ячейку, вторая строка может содержать 1 или 3 ячейки в зависимости от условий, которые происходят в этой строке. Моя задача в зависимости от кол-ва прописать объединение в первой строке.

Пример 1:

<table>
<tr>
<td colspan="3"></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>

Пример 2:

<table>
<tr>
<td colspan="2"></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</table>

Как вы бы решили данную задачу, если вторая строка содержит условия определяющие кол-во ячеек?

Link to comment
Share on other sites

  • 0

А если это на яваскрипте делать?

Как вариант, да, можно.


<?php
$s = 2;
function td($s) {
for($i = 0; $i < $s; $i++) {
$td.='<td></td>';
}
return $td;
}
function col($s) {
if($s) {
$col.='<td colspan="'.$s.'"></td>';
}
return $col;
}
echo '
<table>
<tr>
'.col($s).'
</tr>
<tr>
'.td($s).'
</tr>
</table>';
?>

К сожалению нет, у вас $s определяется до функций, а у нас значение будет известно только после.

Ребят, всем спасибо, раз это все не так просто, как я предполагал.

Мы просто сделаем дополнительную проверку до вывода таблицы, чтобы уже заранее знать кол-во ячеек.

Link to comment
Share on other sites

  • 0

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

Если ваш дискриптер, заведомо равен "true", то как без методов "while" или "for", он может быть равен "false" ?

А если прямо по коду, то:


<?php

$x=1;

if($x==0)
$colspan="";
else
$colspan="colspan='2'";

echo <<<table

<tr>
<td {$colspan}>Текст</td>
</tr>
<tr>

</tr>
<tr>
table;
?>

Edited by oscora
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy