请帮助我使用带有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>' ;
}
?>
我已经
了解析错误:在第84行的xyz.php中解析错误
答案 0 :(得分:2)
为了避免将来出现此类问题和错误,您必须将块代码分开:
像这样:
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>
答案 1 :(得分:1)
我不认为你可以在你的echo函数调用中调用if语句,你需要将它们彼此分开,有些事情可以尝试:
echo '<button class=\"btn btn-default\" id='. $value;
if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons'])))
{
echo 'disabled';
}
echo '></button>' ;
答案 2 :(得分:1)
使用echo语句组合html和php很快就会变得混乱和不可读。
阅读alternative syntax for control structures以及ternary operator。应用这两种约定,您的代码看起来更像是:
<?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; ?>
解析错误是您尝试使用echo语句链接if语句($ value if ...)的结果,并且在if {disabled
中只有echo 'disabled'
而不是sscanf
声明。
答案 3 :(得分:1)
您可以通过以下方式进行操作 -
<?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>' ;
}
?>
答案 4 :(得分:1)
(代表OP发布)。
工作代码:
<?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>' ;
}
?>
答案 5 :(得分:1)
除了可读性之外,问题可以修复如下:
$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!