簡體   English   中英

如何在 PHP 中從多個數組中刪除空行元素

[英]How to Remove Empty Row Elements from Multiple Array in PHP

我使用 Array 發布了一組產品信息。 有一段時間已插入空行。 如何刪除這個。

在此處輸入圖片說明

客戶端代碼:

<?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')");

根據您如何將行定義為空,如果空產品名稱為空行,則:

添加條件if ($product == '') continue;

前:

$insertqry=mysql_query("insert into invoice (prodt,qty,rates,amts) values('$product','$qty','$rate','$amts')");

到代碼的服務器端。 因此它將跳過沒有名稱的產品。

如果這不是您想要的,請告訴我,我將再次編輯我的代碼,謝謝。

你真的應該檢查你的 $_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 } ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM