while循环中的while循环?从PHP中分离数据

while循环中的while循环?从PHP中分离数据,php,while-loop,Php,While Loop,//什么时候???在这混乱的回声中可能很难看到,但有一部分我不知道如何处理。PHP正在抓取信息行,并很好地填充它们。它在屏幕上填满了小信息框 在本节中,我不知道如何处理,其中一行中的数据每次都包含多个由a分隔的东西thing1、thing2、thing3。我需要把这些东西都换成新的东西 所以我觉得每张卡里面都会有另一个while循环?你的循环是正确的。尝试以下操作,根据逗号分隔符将字符串分解为数组,并使用: 是的,您需要首先将该行分解为一个数组 echo '<select name="se

//什么时候???在这混乱的回声中可能很难看到,但有一部分我不知道如何处理。PHP正在抓取信息行,并很好地填充它们。它在屏幕上填满了小信息框

在本节中,我不知道如何处理,其中一行中的数据每次都包含多个由a分隔的东西thing1、thing2、thing3。我需要把这些东西都换成新的东西


所以我觉得每张卡里面都会有另一个while循环?

你的循环是正确的。尝试以下操作,根据逗号分隔符将字符串分解为数组,并使用:


是的,您需要首先将该行分解为一个数组

echo '<select name="set">';
foreach( explode( ',', $row['sets']) as $item)
    echo '<option>', $item, '</option>';
echo '</select>';
然后使用while或foreach:

您可能还会发现here文档语法很有用:

$thing_options = '';
foreach($list_of_things as $thing)
    $thing_options .= "<option>$thing</option>";
您可以使用PHP将逗号分隔的字符串拆分为其值,然后在foreach循环中处理该数组:

print <<<TEMPLATE
<div class="sleeve">
    <div class="card {$row['name']}">
    <div class="front face">
        <img src="/{$row['cardset']}/{$row['name']}{$row['altart']}.jpg"
           alt="{$row['name']}" />
    </div>
    <div class="back face">
        <a id="name">{$row['name']}</a>
        <br/>
        <form name="info" action="">
        <select name="set">
            {$thing_options}
            <option value="Zendikar">{$row['sets']}</option>
        </select>
        ...
TEMPLATE;

在将字符串分解为数组后,可能需要一个foreach语句: 而不是//while行和以下行:

$raw = "one,two,three";
$values = explode("," $raw);
foreach($values as $value) {
    echo $value;
}
我猜你可能会为每一行显示另一个值,另一个是你想要设置的实际值,但是字符串看起来更像key1=value1,key2=value2,然后你需要做更多的工作,但是你明白了。
希望这能有所帮助。

虽然所有告诉您分解数组的答案都是正确的,但我还是忍不住认为,用逗号分隔的值填充db列是数据库未规范化的症状。有关db规范化的介绍,请查看以下链接:

我还建议不要回显HTML。理想情况下,PHP脚本应遵循以下模式:

所有PHP处理,包括数据库查询和表单处理。结果应该存储在变量中

| | | 五

几乎是纯HTML模板/视图,具有足够的显示逻辑if/else、循环、echo,以实际显示存储在步骤1的变量中的结果


你会发现,如果让PHP成为你的大脑,让HTML成为你的美,那么调试/编辑就简单多了。就像标记和样式应该如何分开一样,脚本和显示也是如此。

这将取代所有的回音吗?是的。当然,除了变量之外,您不能将任何PHP代码放在here文档中,因此您需要事先计算选项数组,将其存储在变量中,并在here-document中引用{$options}。理想情况下,@kevinmajor1就是这么说的,您需要在任何输出之前完成所有处理。然后,您甚至可以从外部.HTML或.php文件而不是从here文档加载HTML代码。这使得调试更加容易,并且在发生错误的情况下,您可以生成一个干净的错误页面或重定向,因为您还没有回显任何其他内容,而不是第一个半成品页面,然后是一条错误消息。
print <<<TEMPLATE
<div class="sleeve">
    <div class="card {$row['name']}">
    <div class="front face">
        <img src="/{$row['cardset']}/{$row['name']}{$row['altart']}.jpg"
           alt="{$row['name']}" />
    </div>
    <div class="back face">
        <a id="name">{$row['name']}</a>
        <br/>
        <form name="info" action="">
        <select name="set">
            {$thing_options}
            <option value="Zendikar">{$row['sets']}</option>
        </select>
        ...
TEMPLATE;
$raw = "one,two,three";
$values = explode("," $raw);
foreach($values as $value) {
    echo $value;
}
foreach (explode(',', $row['sets']) as $value)
  echo '<option value="', $value, '">', $value,'</option>';