2012-09-19 41 views
0

我有一個表格,可以從一個選擇框和文本輸入字段的表格中發送最多爲$_POST['ore']的整數。有問題的陣列是:計數數組值> 0

print_r($_POST) 
//returns 
Array 
(
[ore] => Array 
    (
     [0] => 1 
     [1] => 2 
     [2] => 0 
     [3] => 0 
     [4] => 0 
     [5] => 0 
     [6] => 0 
     [7] => 0 
     [8] => 0 
     [9] => 0 
    ) 
.... 

而這就是它得到的更大,它是一個小應用程序。 10個選擇框,10個輸入框。表單本身和其他功能很好。

但是,在提交時,將數據發送到處理所收集信息的另一頁面,並根據該陣列的count生成一個帶有while循環的新表。但是,我只想計數大於0的值,因爲零在技術上是空的。

我已經嘗試了多個函數,例子,碎片,並嘗試過笨運氣,但沒有積極的結果。我已經得到了一些部分工作,但大部分時間他們離開了最後一行。

我目前有size = count($_POST['ore']); - 但是,這會創建一個包含10行的表(應該如此),並使用while代碼的最後一個循環填充表中的其餘行。功能性,但煩人,而不是我想做的事情。

我曾嘗試與array_filter

function nonzero($var){ 
    return ($var > 0); } 
$size = array_filter($_POST['ore'], "nonzero"); 

沒有運氣。

我試過if(isset($_POST['ore']))在多個地方,但由於數組中有一個0值,所以在技術上設置了它。

那麼,如何計算或過濾計數$ _POST ['ore']數組的值來消除0,並只計數或返回大於0的鍵?

我敲打鍵盤,我提前感謝你。


編輯 - 找到了答案,謝謝大家的反饋這個清晨

function nonzero($var){ 
    return ($var > 0); } 
$size = count(array_filter($_POST['ore'], "nonzero")); 

^^認爲這樣做是

+0

請一個有意義的標題編輯你的問題。 – Jocelyn

回答

1

您曾嘗試:

$size = array_filter($_POST['ore], "nonzero"); 

這是一個錯字,當你發表這篇文章或者你從代碼中複製了嗎?如果是這樣,則省略撇號。此外,$大小將返回數組與均大於0的所有值,所以對於大小,你需要:

$size = count(array_filter($_POST['ore'], "nonzero")); 
+0

錯誤的帖子,我會修復 – jwajernigan

+0

我剛剛更新了這篇文章,你有什麼問題與array_filter?我剛發佈的內容應該可以工作。 – Zeritor

+0

你是一個多才多藝! - 這個竅門 – jwajernigan

0

你實際上並不需要定義過濾功能,如果有中沒有負面因素數組,array_filter默認過濾掉零:

$size = count(array_filter($_POST['ore'])); 
+0

我也會嘗試,並且不會,所有積極因素。 – jwajernigan

0

你的功能應能正常工作,返回,你必須要知道的是,該功能是你唯一的數組這樣:

$_POST['ore'][] = 1; 
$_POST['ore'][] = 2; 
$_POST['ore'][] = 0; 
$_POST['ore'][] = 0; 

function nonzero($var){ 
    return ($var > 0); } 

$arr = array_filter($_POST['ore'], "nonzero"); 
echo count($arr); // this returns 2 
0

您好剛剛嘗試取消設置爲值

foreach($array as $array_key=>$array_item) 
{ 
    if($array[$array_key] == 0) 
    { 
    unset($array[$array_key]); 
    } 

}

希望其具有0數組的索引,這將幫助你