PHP阵列打印

时间:2016-03-11 15:59:46

标签: php mysql

我的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 (原谅我的检查要素)。

2 个答案:

答案 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