2013-07-03 64 views
2

我正在從我的表單寫入一個字符串,我想從最後刪除最後一個逗號。我明白我可以使用rtrim(),但我不明白如何從循環中返回一個變量。我確信這是一個簡單的答案,只是超級困惑。謝謝!PHP從我的循環中刪除最後一個字符

if (isset($_POST['submit'])) { 

foreach ($_POST['data'] as $data) 
{ 

    echo $data['Monday']; 
    echo $data['Tuesday']; 
    echo $data['Wednesday']; 
    echo $data['Thursday']; 
    echo $data['Friday']; 
    echo $data['Saturday']; 
    echo $data['Sunday']; 
    echo ", "; 
} 

} // end if 
+0

將它們收集在一個字符串中並剪切它的最後2個字符,然後回顯它 – 2013-07-03 21:44:29

回答

3

您可以檢查您是否在最後一個元素上,如果是,則跳過打印逗號:

end($_POST['data');    // fast forward to the end of the array 
$lastKey = key($_POST['data'); // and remember what the last key is 

foreach ($_POST['data'] as $key => $data) 
{ 
    echo $data['Monday']; 
    echo $data['Tuesday']; 
    echo $data['Wednesday']; 
    echo $data['Thursday']; 
    echo $data['Friday']; 
    echo $data['Saturday']; 
    echo $data['Sunday']; 
    if ($key !== $lastKey) echo ", "; 
} 

這種方法讓我感覺更清潔:預防勝於治療。

+0

雖然我邏輯上同意你的想法'預防勝於治療'它仍然感覺有一個條件,你可以避免在循環中對我來說是錯誤的。 +代表,雖然我沒有想到這一點,永遠,大聲笑.. –

+0

@php_nub_qq:我同意,它會更清潔,但沒有條件,但:a)它在實踐中並不重要 - d必須做出數十億次迭代來衡量差異,以及b)任何試圖消除這種情況的嘗試都會產生自己的(最可能更高的)資源成本。你能提出更好的建議嗎? – Jon

+0

不是真的,我不是說這是你應該擔心的壞事或消費,它就像一個寵物peeve:D –

1

而不是立即echo'ing的數據,將其存儲在緩衝區中的...

if (isset($_POST['submit'])) { 
    $buffer = ""; 
    foreach ($_POST['data'] as $data) 
    { 
     $buffer .= $data['Monday']; 
     $buffer .= $data['Tuesday']; 
     $buffer .= $data['Wednesday']; 
     $buffer .= $data['Thursday']; 
     $buffer .= $data['Friday']; 
     $buffer .= $data['Saturday']; 
     $buffer .= $data['Sunday']; 
     $buffer .= ", "; 
    } 
    $buffer = rtrim($buffer, ", "); 
    echo $buffer; 
} // end if 

或者更短:

if (isset($_POST['submit'])) { 
    implode(", ", $data); 
} // end if 

假設$data只有那些週一週日鑰匙..

+0

是否也可以這樣:$ newdata =($ _POST ['data'],「,」); foreach($ newdata作爲$ data)? – magicianiam

+0

@magicianIam我不認爲這是有效的。你可以做'implode(「,」,$ _POST ['data'])' - 如果這就是你的意思。 –

+0

這將是一個解決方案,但我仍然想看看$ _POST ['data']包含什麼,爲什麼只有一個和TS可以有一個較短的答案 – magicianiam

1

你需要有一個變量

$str = null; 
if (isset($_POST['submit'])) { 

    foreach ($_POST['data'] as $data) 
    { 

     $str .= $data['Monday'] . 
     $data['Tuesday'] . 
     $data['Wednesday'] . 
     $data['Thursday'] . 
     $data['Friday'] . 
     $data['Saturday'] . 
     $data['Sunday'] . 
     ", "; 

    } 
$str = substr($str,0,-2); 
} 

然後,你必須在$str的數據,然後您可以回聲或做的東西與

1

你可以得到$_POST['data']的最後一個索引和當那是達到根本就沒有回送,

end($_POST['data']); 
$last_key = key($_POST['data']); 
foreach ($_POST['data'] as $key => $data) { 
    // echoes here 
    if ($key != $last_key) { 
     echo ','; 
    } 
} 
相關問題