如何在 PHP 中从多个数组中删除空行元素
Posted
技术标签:
【中文标题】如何在 PHP 中从多个数组中删除空行元素【英文标题】:How to Remove Empty Row Elements from Multiple Array in PHP 【发布时间】:2017-11-01 04:45:53 【问题描述】:我使用数组发布了一组产品信息。有一段时间已插入空行。如何删除它。
客户端代码:
<?php for($i=1; $i<6; $i++) ?>
<input type="text" name="product[]" id="product$i">
<input type="text" name="qty[]" id="qty$i">
<input type="text" name="rate[]" id="rate$i">
<input type="text" name="amount[]" id="amount$i">
<?php ?>
服务器端代码:
$product=implode('#@$',$_POST["product"]);
$qty=implode('#@$',$_POST["qty"]);
$rate=implode('#@$',$_POST["rate"]);
$amts=implode('#@$',$_POST["amount"]);
$insertqry=mysql_query("insert into invoice (prodt,qty,rates,amts) values('$product','$qty','$rate','$amts')");
【问题讨论】:
你说标记为空的依据是什么? 有时用户不填写该行。如果空行无法插入值@AlivetoDie 将 for 循环中的所有内容都包装在 IF 语句中...? 【参考方案1】:根据您如何定义为空的行,如果空产品名称为空行, 那么:
添加条件 if ($product == '') continue;
之前:
$insertqry=mysql_query("insert into invoice (prodt,qty,rates,amts) values('$product','$qty','$rate','$amts')");
到代码的服务器端。因此它将跳过没有名称的产品。
如果这不是您想要的方式,请告诉我,我将再次编辑我的代码,谢谢。
【讨论】:
【参考方案2】:你真的应该检查你的 $_POST 值,你可以使用array_filter
$product = implode('#@$', array_filter($_POST["product"], function($var)
return isset($var)
));
此外,您应该解析多维数组中的值
$datas = [];
foreach ($_POST['product'] as $index => $product)
$product = isset($product) ? $product : null;
$qty= isset($_POST['qty'][$index]) ? $_POST['qty'][$index] : null;
$rate= isset($_POST['rate'][$index]) ? $_POST['rate'][$index] : null;
$amount= isset($_POST['amount'][$index]) ? $_POST['amount'][$index] : null;
if ($product && $qty && $rate && $amts)
$data[] = [
'product' => $product,
'qty' => $qty,
'rate' => $rate,
'amount' => $amount
];
现在你可以做这样的事情了
<?php foreach ($datas as $data) ?>
<input type="text" name="product[]" id="product$data['product']">
<input type="text" name="qty[]" id="qty$data['qty']">
<input type="text" name="rate[]" id="rate$data['rate']">
<input type="text" name="amount[]" id="amount$data['amount']">
<?php ?>
【讨论】:
以上是关于如何在 PHP 中从多个数组中删除空行元素的主要内容,如果未能解决你的问题,请参考以下文章