-1

我正在尝试遍历数组并打印 HTML。

<?php
$categories = array('Hardware', 'Software', 'Game Items', 'Game Accounts');
?>

一些 HTML 在这里。我只是想要页面顶部的数组以便于编辑。

<?php
foreach($categories as $category){

    echo "<option value=\"Hardware\"{$GLOBALS['filters_set']['trdfcat']['selected']['\" . $category . \"']}>\" . $category . \"</option>\""

}
?>

我很难在这个回声部分得到正确的语法。某些原因不会正确回应,我认为这是因为括号。

原始的 HTML 代码是

<option value="Hardware"{$GLOBALS['filters_set']['trdfcat']['selected']['Hardware']}>Hardware</option>

它必须像这样呼应。

4

3 回答 3

3

看起来您的引号有一些语法错误。尝试连接变量:

echo "<option value='Hardware" . $GLOBALS['filters_set']['trdfcat']['selected'][$category] . "'>$category</option>";

如果你真的想插值:

echo "<option value='Hardware{$GLOBALS['filters_set']['trdfcat']['selected'][$category]}'>$category</option>";

如果它更容易,您也可以拆分:

echo "<option value='Hardware";
echo $GLOBALS['filters_set']['trdfcat']['selected'][$category];
echo "'>$category</option>";
于 2014-07-22T08:06:40.103 回答
2

您可以使用 foreach (以及 while 等)的替代语法。

foreach 循环和回显的替代语法

<?php foreach($iterable as $item): ?>
<span><?=$item?></span>
<?php endforeach;?>

我喜欢使用这种语法,因为它对我来说看起来更干净。你的代码适应我的建议是:

<?php
$categories = array('Hardware', 'Software', 'Game Items', 'Game Accounts');
?>
//Some html...
<?php foreach($categories as $category): ?>
<option value="Hardware" <?=$GLOBALS['filters_set']['trdfcat']['selected']['Hardware'];?>><?=$category;?></option>
<?php endforeach;?>

我不知道为什么如果有多个类别,你为什么要把“硬件”放在每个值的开头,并将你的一些输出放在标签的非属性部分,也许你的意思是:

<?php
$categories = array('Hardware', 'Software', 'Game Items', 'Game Accounts');
?>
//Some html...
<?php foreach($categories as $category): ?>
<option value="<?=$GLOBALS['filters_set']['trdfcat']['selected'][$category];?>"><?=$category;?></option>
<?php endforeach;?>

应该没问题,但未经测试!

于 2014-07-22T08:30:01.300 回答
1

为了更好的可读性,我倾向于将这样的内容分成单独的行:

<?php
foreach($categories as $category) {

    echo "<option value=\"Hardware\"";
    echo $GLOBALS['filters_set']['trdfcat']['selected'][$category];
    echo ">" . $category . "</option>";

}
?>
于 2014-07-22T08:08:44.460 回答