2017-05-31 29 views
-3

我使用Array發佈了一組產品信息。有些時候空行​​已被插入。如何刪除這個。如何從PHP中的多個數組中刪除空行元素

enter image description here

客戶端代碼:

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

你說的標記是空的基礎是什麼? –

+0

某些用戶未填充該行。如果行空無法插入值@AlivetoDie – Karthik

+1

將所有內容都包含在IF語句中的for循環中? –

回答

0

取決於你如何定義一排是空的,如果空的產品名稱是空行, 然後

添加一個condit離子if ($product == '') continue;

之前

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

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

讓我知道如果這不是你想要的,我會再次編輯我的代碼謝謝。

0

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