0

基本上我想将以下信息添加到单个数据库字段中,(txt-via-hn 文本框是门牌号,txt-via 是地址详细信息)

$vias =         $_POST['txt-via-hn2'].' '.$_POST['txt-via2'] 
        .' -> '.$_POST['txt-via-hn3'].' '.$_POST['txt-via3']
        .' -> '.$_POST['txt-via-hn4'].' '.$_POST['txt-via4']
        .' -> '.$_POST['txt-via-hn5'].' '.$_POST['txt-via5']
        .' -> '.$_POST['txt-via-hn6'].' '.$_POST['txt-via6']
        .' -> '.$_POST['txt-via-hn7'].' '.$_POST['txt-via7']
        .' -> '.$_POST['txt-via-hn8'].' '.$_POST['txt-via8']
        .' -> '.$_POST['txt-via-hn9'].' '.$_POST['txt-via9']
        .' -> '.$_POST['txt-via-hn10'].' '.$_POST['txt-via10'];

目前,例如,如果我要输入两个过孔,则会将以下内容添加到数据库字段中:

HOUSENUMBER ADDRESS -> HOUSENUMBER ADDRESS -> -> -> -> -> -> ->

我想要发生的是,如果文本框值为空,则不包括末尾的空格。因此,如果我只输入两个过孔,则只会添加以下内容:

HOUSENUMBER ADDRESS -> HOUSENUMBER ADDRESS

这可能吗?

4

2 回答 2

2

将它们全部添加到一个数组中,运行array_map()它们array_filter()以摆脱空元素,然后implode()是它们,如下所示:

$array = array();
foreach( range( 2, 10) as $i) {
    $array[] = $_POST['txt-via-hn' . $i] . ' ' . $_POST['txt-via' . $i];
}
$vias = implode( ' -> ', array_filter( array_map( 'trim', $array)));

您甚至可以检查循环中的空值,并省略对 的调用array_filter(),如下所示:

$array = array();
foreach( range( 2, 10) as $i) {
    if( !empty( $_POST['txt-via-hn' . $i]) && !empty( $_POST['txt-via' . $i])) 
        $array[] = $_POST['txt-via-hn' . $i] . ' ' . $_POST['txt-via' . $i];
}
$vias = implode( ' -> ', $array);

请注意,如果您尝试访问$_POST未定义的索引,这两种方法都会产生通知。要纠正此问题,请isset()在尝试读取之前致电$_POST以确保已设置密钥。

于 2012-07-03T12:48:26.177 回答
0
for($i = 2; $i <= 10; $i++)
{
    if(strlen($_POST['txt-via2']))
        $array[] = $_POST['txt-via-hn'.$i] . ' ' .  $_POST['txt-via'.$i];
}

$vias = join("->", $array);
于 2012-07-03T12:49:52.640 回答