Помогите мне превратить это в динамическое, используя эхо с HTML и PHP, используя диапазон массивов
<?php $arr = array(1, 2, 3, 4); $selected='<img src="assets/images/resev.png" class="img-circle" width="40" height="40" />'; $aval='<img src="assets/images/aval.png" class="img-circle" width="40" height="40" />'; foreach ($arr as &$value) { <button class="btn btn-default" id=$value <?php if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))){ ?> disabled <?php } ?> > <?php if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))) { echo $selected ; } else { echo $aval ; } ?>$value </button>
пока я это сделал
<?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { echo '<button class="btn btn-default" id='. $value if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))){ disabled }. '> //line 84 </button>' ; } ?>
и я уже получаю
Ошибка анализа: ошибка синтаксического анализа в xyz.php в строке 84
Вы можете сделать так:
<?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $disabled = ''; if(isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))) { $disabled = 'disabled'; } echo '<button class="btn btn-default" id='.$value.' '.$disabled.'>Test Button</button>' ; } ?>
Чтобы избежать таких проблем и ошибок в будущем, вы должны отделить свой код от блоков:
Как это:
Содержание index.php
<?php // define $a = 1; $b = 2; $c = null; // value for fallback // calculate $c = $a + $b; // include template include_once 'template.phtml';
Содержимое template.phtml (шаблон оценки)
<div> <p><?= $a ?></p> <p><?= $b ?></p> <?php if ($c !== null) { ?> <p><?= $c ?></p> <?php } else { ?> <p>$c variable has not calculated</p> <?php } ?> </div>
Я не думаю, что вы можете вызвать оператор if внутри вашего вызова функции эха, вам нужно отделить их друг от друга, что-то, что можно попробовать:
echo '<button class=\"btn btn-default\" id='. $value; if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))) { echo 'disabled'; } echo '></button>' ;
Объединение html и php с помощью эхо-заявлений может быстро стать грязным и нечитаемым.
Прочитайте альтернативный синтаксис для структур управления, а также для тернарного оператора . Применяя оба соглашения, ваш код будет выглядеть примерно так:
<?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) : ?> <button class="btn btn-default" id="<?=$value;?><?=((isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons'])))?' disabled':''?>"> <?php if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))) : ?> <img src="assets/images/resev.png" class="img-circle" width="40" height="40" /> <?php else : ?> <img src="assets/images/aval.png" class="img-circle" width="40" height="40" /> <?php endif; ?> </button> <?php endforeach; ?>
Ошибка синтаксического анализа является результатом вашей попытки связать оператор if ($ value if …) с инструкцией echo, а также просто disabled
вместо echo 'disabled'
в вашем if if}.
(Отправлено от имени ОП).
Рабочий код:
<?php $arr = array(1, 2, 3, 4, 5); foreach ($arr as &$value) { $disabled = ''; if(isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))) { $disabled = 'disabled'; $image = $selected ; } else { $disabled = ''; $image = $aval ; } echo '<button class="btn btn-default" id='.$value.' '.$disabled.'>' .$image.' '.$value.'</button>' ; } ?>
Помимо читаемости, проблему можно устранить следующим образом:
$arr = array(1, 2, 3, 4); foreach ($arr as &$value) { echo '<button class="btn btn-default" id="'. $value . '" ' . ((isset($_SESSION['buttons']) && in_array($value, $_SESSION['buttons'])) ? 'disabled="disabled"' : '') . '>test</button>'; }
Здесь я использовал так называемый ternary operator
.
Вот оно, но немного яснее:
$arr = array(1, 2, 3, 4); foreach ($arr as &$value) { echo '<button class="btn btn-default" id="'. $value . '" ' . ( (isset($_SESSION['buttons']) && in_array($value, $_SESSION['buttons'])) ? 'disabled="disabled"' : '' ) . ' >test</button>'; }
Тернарный оператор похож на оператор if, но обычно используется для встроенных вещей.
Синтаксис таков:
$myVar = (expression ? true : false);
Вот пример того, как получить «Woo!» когда число равно 1.
$number = 1; $wooOrNe = ($number === 1 ? "Woo!" : "Ne."); // Woo!