我想知道正確的代碼來檢測來自表單的數值$ _POST字段。
請更正我的代碼。
foreach ($_POST as $vals) {
if (is_numeric($vals)) {
if (is_numeric($vals[$i]) && ($vals[$i]!="0")) {
//do something
}
}
我想知道正確的代碼來檢測來自表單的數值$ _POST字段。
請更正我的代碼。
foreach ($_POST as $vals) {
if (is_numeric($vals)) {
if (is_numeric($vals[$i]) && ($vals[$i]!="0")) {
//do something
}
}
$_POST = array_filter($_POST, "is_numeric");
上面將去除所有非數字數組項。
foreach (array_filter($_POST, "is_numeric") as $key => $val)
{
// do something
echo "$key is equal to $val which is numeric.";
}
更新:
如果你只希望那些像$ _ POST [1],$ _ POST [2]等。
foreach ($_POST as $key => $vals){
if (is_numeric($key)){
//do something
}
}
它帶來的價值,我想比較字段名稱。如果它們是數字,則繼續。 – dave
更新了上述內容。只要對array_filter執行foreach即可。如果這不是你的意思,你能提供一些僞代碼嗎? –
@sixeightzero:我想他想刪除'$ _POST ['name']',但保留'$ _POST ['12']'。 –
嘗試:
foreach ($_POST as $key => $vals){
//this is read: $_POST[$key]=$value
if (is_numeric($vals) && ($vals!="0")){
//do something
}
}
if(isset($_POST)){
foreach($_POST as $key => $value){
if(is_numeric($key)){
echo $value;
}
}
}
比較鍵
以下代碼與isset()
試圖在一個數組上工作是無效的。
if(isset($_POST)){ //isset() only works on variables and array elements.
foreach($_POST as $key => $value){
if(is_numeric($key)){
echo $value;
}
}
foreach ($_POST as $key => $val)
{
if (is_numeric($key))
{
// do something
}
}
更好,但現在的foreach將使$ _ POST副本,並把在內存爲循環的持續時間(編程PHP:。第6章,第128-129) 。我希望緩衝區溢出或內存不足錯誤不會跳起來咬你。 :-)
也許這將是明智的決定一些事實約$ _ POST與is_array(),空(),COUNT()等人在開始之前,如...
if(is_array($_POST) && !empty($_POST))
{
if(count($_POST) === count($arrayOfExpectedControlNames))
{
//Where the the values for the $postKeys have already been validated some...
if(in_array($arrayOfExpectedControlNames, $postKeys))
{
foreach ($_POST as $key => $val) //If you insist on using foreach.
{
if (is_numeric($key))
{
// do something
}
else
{
//Alright, already. Enough!
}
}
}
else
{
//Someone is pulling your leg!
}
}
else
{
//Definitely a sham!
}
}
else
{
//It's a sham!
}
儘管如此,$val
值需要一些驗證,但我相信你已經掌握了這一點。
''// isset()只對變量和數組元素有作用 - 在這個上下文中這是一個無意義的語句,'$ _POST' _is_是一個變量。 _problem_是_always_集合,但可能是空的,這就是爲什麼使用'isset'來檢查請求方法是否是POST沒有意義的原因。 'empty'將會工作,或者使用'count'。 – CBroe
我的朋友,'$ _POST'是在這種情況下的一個數組(不管它是超全球的)。我的發言很有道理。 PHP語言結構'isset()'不適用於數組,只能使用_variables_和_array elements_。因此,不管你先前的推理如何,在'$ _POST'上使用'isset()'是無效的。 [PHP手冊:isset()](http://us2.php.net/manual/en/function.isset.php) –
什麼不在這裏工作? '$ i'從哪裏來?這段代碼看起來很好,只是刪除第二個'if'語句。 –
我只想保留來自$ _POST的數字表單字段。但它帶來的所有內容包括字段 – dave
foreach($ _POST as $ key => $ vals)'然後if(is_numeric($ key))' –