我的MySQL数据库中有一些字符串。在这个问题中使用的两个是:
$preset = "Because we to and "
$response = "want survive prosper improve"
$order = "00101101"
我想按照$order
列出的顺序打印页面上的预设和响应文本(0 =预设,1 =响应)。
到目前为止,我有这段代码:
#Variables
$responsewords = explode(" ",$response);
$presetwords = explode(" ", $preset);
$orderexplode = str_split($order, 1);
#Doing Things
foreach($orderexplode as $o)
{
for ($rsw = 0; $rsw <= $noresponse; $rsw++ )
{
switch ($o)
{
case 0:
echo "<br>"."<label>".
$presetwords[$rsw].
"</label>"." ";
break;
case 1:
echo "<input type='text' class='form-control'".
" placeholder=".$responsewords[$rsw].">";
break;
}
}
}
我的问题是这段代码打印this,基本上它会打印出整个字符串,但不会为每个0或1分隔成单独的单词。我要找的结果是this (原谅我的检查要素)。
答案 0 :(得分:0)
尝试
$preset = "Because we to and ";
$response = "want survive prosper improve";
$order = "00101101";
$orderexplode = str_split($order, 1);
$responsewords = explode(" ",$response);
$presetwords = explode(" ", $preset);
$i =0; $k=0;
foreach($orderexplode as $o)
{
switch ($o)
{
case 0:
echo "<label>".$presetwords[$i]."</label>"." ";
$i++;
break;
case 1:
echo "<input type='text' class='form-control' placeholder=".$responsewords[$k]."><br>";
$k++;
break;
}
}
答案 1 :(得分:0)
使用array_shift()
和sprintf
,您可以缩短代码。
第一部分保持不变:
$preset = "Because we to and ";
$response = "want survive prosper improve";
$order = "00101101";
然后,我们创建一个阵列,在索引0处具有爆炸预设,在索引1处创建爆炸响应。
另外,我们创建一个带有格式(一种模板)的数组,其中键与先前的数组相对应。 %s
将替换为单个词:
$strings = array( explode(" ",$preset), explode(" ", $response) );
$formats = array( '<label>%s</label>', '<input type="text" class="form-control" placeholder="%s">' );
$orderexplode = str_split( $order, 1 );
通过foreach
循环,我们根据$string
从$orderexplode
子数组中提取单个单词,然后使用sprintf()
作为格式输出:
foreach( $orderexplode as $key => $o )
{
$txt = array_shift( $strings[$o] );
echo sprintf( $formats[$o], $txt ).PHP_EOL;
}
的 phpFiddle demo 强>