Привет всем) проблема банальна и проста для знающих, а для незнающих такой фарш, как у меня ) не получается вывести значение переменной $color, в элементе bgcolor на выходе, значение переменной не переносится, обозначить $color как global не помогает, вот пример кода: PHP: <!DOCTYPE HTML> <?php function DrawTable($cols,$rows,$color) { for ($c=1;$c<=$cols;$c++) { print "<tr>"."\n"; for ($r=1;$r<=$rows;$r++) { print "<td>".$c*$r."</td>"."\n"; } print "</tr>"; } } ?> <table border="1" bgcolor="<?="$color";?>"> <?php echo DrawTable(7,9,"green"); ?> </table>
математические расчеты / действия с переменными, заключай в скобочки --- Добавлено --- какую фантастику ночью смотрел ?
проверял 1. переменной &color присваивал значение по умолчанию &color="green".. любой цвет.. 2. писал в теле функции global &color и присваивал значение; Я на самом деле просто хотел сделать ее глобальной, указать значение и втупую перенести это значение в элемент bgcolor.. но при компиляции почему то значение элемента вообще не выдается.. Не это что получается я должен этому элементу приписать массив и в этот массив перечислением все возможные значения цвета указать, чтоб потом на них ссылаться в функции? А по проще способа нет никакого? )
А в чем смысл переменной $color если она в функции не используется? PHP: <!DOCTYPE HTML> <?php function DrawTable($cols,$rows,$color) { for ($c=1;$c<=$cols;$c++) { print "<tr>"."\n"; for ($r=1;$r<=$rows;$r++) { print "<td>".$c*$r."</td>"."\n"; } print "</tr>"; } } ?> <?php $color='green'; ?> <table border="1" bgcolor="<?="$color";?>"> <?php echo DrawTable(7,9,$color); ?> </table> Объяви переменную $color чуть выше, чем ты ее вызываешь и всё. Кроме этого, если тебе так хочется воткнуть ее в функцию, пропиши ее, как $color а не значением и всё, хотя как уже писали выше и я тоже на это обратил внимание, она, эта переменная $color в функции не используется. Кроме этого давать функции имя с верхнего регистра - моветон!
Человек отправляет в функцию данные, а хочет их получить вне функции, чего тут ещё советовать? логику включи.
Я извиняюсь, а о какой логике речь? Если я не ошибаюсь, то JS может применять свойство после загрузки DOM, вот пусть в функции прописывает JS со стилем в который этот $color и будет передаваться. Пардоньте, возможно это чушь, но если основываться на той логике к которой вы призываете, то тут это будет уместно! Кроме всего этого, как я подразумеваю, функцию пишут не для разового использования, а значит данные передающие ей, будет откуда-то приходить, а значит теряется весь смысл использования $color в функции, чтоб потом пытаться эту переменную вызвать из самой функции. Т.е. вполне логично, если значения передающиеся в функцию, $col, $row, $color будут объявляться выше, а значит участие $color в функции просто вне всякой логики.
В общем из написанного я заключил, что выводить какие-либо значения переменных за пределы функций в php не предусмотрено, даже придавая этой переменной статус global, к тому же это не этично. На тех уроках, которые мы проходили, такое просто имело место быть и я в данном случае хотел повторить это для примера и избежания сложностей. Я вообще бы не парился, и мне кажется сама постановка такого вопроса неуместной, зачем javascript? если можно втупую передать значение bgcolor с помощью css..
Решил проблему таким путем выглядит громоздко и несуразно: PHP: <!DOCTYPE HTML> <?php function DrawTable($cols,$rows,$color) { switch ($color) { case 'blue': echo "<table border='1' bgcolor='blue'</table>"; break; case 'green': echo "<table border='1' bgcolor='green'</table>"; break; default: echo "<table border='1' bgcolor='red'</table>"; break; } for ($c=1;$c<=$cols;$c++) { print "<tr>"."\n"; for ($r=1;$r<=$rows;$r++) { print "<td>".$c*$r."</td>"."\n"; } print "</tr>"."\n"; } } echo DrawTable(7,9,"blue");
Тогда задам тебе вопрос, а зачем тогда писать функцию, когда можно "втупую" написать это протседуркой без использования функции?! Раз уж ты решил использовать $color в функции, где она там не разу не встречается, я тебе предложил использовать JS, если т.е. ты сможешь динамически менять цвет, а если прописать это в css стиле формата style='' то это будет нижем чем вызов, соответственно результата не будет, а если это прописать в сам файл css то это уже будет статика, а не динамика. А применение JS подразумевало использование после загрузки всего DOM. PHP: function DrawTable($cols,$rows,$color="red"){ } PHP: $table= "<table border='1' bgcolor='".$color."'</table>"; switch ($color) { case 'blue': echo $table; break; case 'green': echo $table; break; default: echo $table; break; } возможно в синтаксисе есть ошибка, не проверял, но логика такова, что ты несколько раз используешь одно и тоже, и если вдруг придется что-то менять, то лучше помять что-то в одной переменной, чем менять это в нескольких местах, а если цветов будет не 3 а 23? Возрастает вероятность ошибки. И кроме всего прочего у тебя тэг table остается не закрыт --- Добавлено --- Хотя накой там вообще switch? PHP: function DrawTable($cols,$rows,$color="red") { echo "<table border='1' bgcolor='".$color."'>"; for ($c=1;$c<=$cols;$c++) { print "<tr>"."\n"; for ($r=1;$r<=$rows;$r++) { print "<td>".$c*$r."</td>"."\n"; } print "</tr>"."\n"; } echo "</table>"; } Так разве не будет работать?
надо было понять, что он хочет, а то было не понятно теперь понятно и я считаю реализацию со свичкейсами вполне неплохой
для дефолтного варианта --- Добавлено --- PHP: function DrawTable($cols, $rows, $color = "red") { echo "<table border='1' bgcolor='$color'>\n"; for ($c = 1; $c <= $cols; $c++) { echo "<tr>\n"; for ($r = 1; $r <= $rows; $r++) { echo "<td>[$c, $r]</td>\n"; } echo "</tr>\n"; } echo "</table>\n"; } echo DrawTable(12, 5); echo DrawTable(7, 9, "blue");
По сути тоже самое что у меня чуть выше только чутка подправлено, но то на работоспособность не влияет.
Спасибо начинаю вкуривать ) на счет ДЗ похоже)), я просто свой сайт делаю а базу брать откуда то приходится )