2012-11-26 113 views
0

不知道如何指定問題更具體和更有意義。處理空數組元素的最佳方法是什麼?

基本上我有一個客戶信息模塊的能力添加多個聯繫人爲每一個客戶,它會類似的東西:

<p>Contacts</p> 
<ul> 
<li> 
<label for="name">Name: <label><input type="text" name="name[]" value="" /> 
<label for="lname">Last Name: <label><input type="text" name="lname[]" value="" /> 
<label for="phone">Phone: <label><input type="text" name="phone[]" value="" /> 
</li> 
<li> 
<label for="name">Name: <label><input type="text" name="name[]" value="" /> 
<label for="lname">Last Name: <label><input type="text" name="lname[]" value="" /> 
<label for="phone">Phone: <label><input type="text" name="phone[]" value="" /> 
</li> 
<li> 
<label for="name">Name: <label><input type="text" name="name[]" value="" /> 
<label for="lname">Last Name: <label><input type="text" name="lname[]" value="" /> 
<label for="phone">Phone: <label><input type="text" name="phone[]" value="" /> 
</li> 
</ul> 

這是一個粗略的例子來說明你的想法。當該表單被提交給php腳本,並且例如第二個聯繫人詳細信息中的姓氏爲空時,當我試圖循環訪問所有聯繫人時,出現偏移錯誤?

<?php 

$total = count($_POST['name']); 
$name = $_POST['name']; 
$lname = $_POST['lname']; 
$phone = $_POST['phone'] 
for($x = 0 ; $x > $total; $x) 
{ 
    echo 'Name: '.$name[$x].' Last name: '.$lname[$x].' Phone: '.$phone[$x]; 
} 

?> 

我沒有測試這個特殊的片段,只在這裏向您展示的想法(可能是幾個你也有類似的問題)。

+1

試試'$ name = $ _POST ['name']? $ _POST ['name']:'';'**或**'$ name = $ _POST ['name'] ==''? '':$ _POST ['name'];' –

+0

我使用'isset'和'empty'的組合來確保項目存在並且它有一個值。在某些情況下,'empty'將不起作用,因爲您希望接收0,''或false作爲有效值。在這種情況下,您需要應用更多驗證。 – Gavin

+0

會記住你的建議傢伙,謝謝 – eloleon

回答

2
for($x = 0 ; $x < $total; $x++) 
{ 
    if(!empty($name[$x])) 
    echo 'Name: '.$name[$x]; 
} 

這是你在找什麼?

+0

謝謝哈利,這應該是個訣竅。我在考慮這個解決方案,但恐怕性能會受到影響,因爲在某些情況下,我需要進行30多次迭代,每次迭代需要約10條記錄才能檢查。將空出一槍,我們會看到發生了什麼 – eloleon

相關問題