2014-02-19 40 views
-1

我有一個包含以下數據

$_POST['survey_que1'] 
$_POST['survey_que2'] 
$_POST['survey_que3'] 
.... 

等一個$_POST

我必須從$_POST得到survey_que的發生次數。

任何想法請。

回答

2

試試這個

會算這個文本
$i=0; 
foreach ($_POST as $name => $val) 
{ 
    if(strpos($name,'survey_que') !== false && $name != "survey_que") 
    $i++; 
} 
echo "No of times survey_que occured in $_POST[] is ".$i; 

編輯

@shri在您的代碼中,如果survey_que2未設置,並且survey_que3已設置,則代碼將失敗。 因此,嘗試這種解決方法涵蓋了所有最壞的情況下也

$i=0; 
foreach ($_POST as $name => $val) 
{ 
    if(strpos($name,'survey_que') !== false && $name != "survey_que") 
    { 
    $key=explode("survey_que",$name); 
    if(sizeof($key) == 2 && is_numeric($key[1]) && $key[0] == "") 
    { 
     $i++; 
    } 
    } 
} 
echo "No of times survey_que occured in $_POST[] is ".$i; 
+1

+1,但你需要減1以顯示發生。 –

+0

是的。 Thanks.I編輯了我的代碼 – krishna

+1

不,它使用'survey_que'開頭的相似鍵。 – Shri

14

重組您的數據。

​​

這將導致$_POST['survey_que']被傳遞的值,你可以很容易地使用count()獲得總計數的數組。

+0

當然。但由於某些情況我不能那樣做。謝謝 – Shri

0

序列化$ _ POST和使用「substr_count」爲計數ocurrences

$how_many = substr_count(serialize($_POST), $search_string)); 

這是我找到的最簡單的方法,但即使它不是一個$ _ POST鍵值

0

這是爲我工作正是我想要的。

$i = 1; 
while (isset($_POST['survey_que' . $i])) { 
    $i++; 
} 

echo $i-1; 

感謝大家的快速支持。

+0

檢查我的編輯部分,它將只需要像'survey_que1,survey_que2,...' – krishna