基本上我想将以下信息添加到单个数据库字段中(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
这可能吗?
答案 0 :(得分: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
以确保密钥已设置。
答案 1 :(得分: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);