Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 迭代数组中的筛选键以用于查询_Php_Arrays_Post_Filter_Key - Fatal编程技术网

Php 迭代数组中的筛选键以用于查询

Php 迭代数组中的筛选键以用于查询,php,arrays,post,filter,key,Php,Arrays,Post,Filter,Key,我的$\u POST数组如下所示: array(4){ [4]=> string(0) "" [1]=> string(1) "5" [2]=> string(1) "3" [3]=> string(0) "" } 数组键代表数据库项的ID。所以我想尝试使用ID的键来更新我的数据库 for($db=0; $db<count($_POST); $db++){ if($_POST[$db] != NULL){ $id = ke

我的
$\u POST
数组如下所示:

array(4){
  [4]=> string(0) ""
  [1]=> string(1) "5"
  [2]=> string(1) "3"
  [3]=> string(0) "" 
}
数组键代表数据库项的
ID
。所以我想尝试使用ID的键来更新我的数据库

for($db=0; $db<count($_POST); $db++){
    if($_POST[$db] != NULL){
        $id = key(current($_POST[$db])); //<-- Problem 
        $value = $_POST[$db];
        // query code
    }
}

对于($db=0;$db这里我们正在使用
foreach
对这篇
$\u POST
进行迭代,希望这会对您有所帮助

将此更改为:

for($db=0; $db<count($_POST); $db++){
    if($_POST[$db] != NULL){
    $id = key(current($_POST[$db])); <-- Problem 
    $value = $_POST[$db]));

    --- here follows the query   ---
    }
<?php
if(is_array($_POST) && count($_POST)>0)
{
    foreach($_POST as $id=> $value)
    {
    //$id is your id
    //$value is the value on that id    
    //--- here follows the query   ---
    }
}

对于($db=0;$db这里我们正在使用
foreach
对这篇
$\u POST
进行迭代,希望这会对您有所帮助

将此更改为:

for($db=0; $db<count($_POST); $db++){
    if($_POST[$db] != NULL){
    $id = key(current($_POST[$db])); <-- Problem 
    $value = $_POST[$db]));

    --- here follows the query   ---
    }
<?php
if(is_array($_POST) && count($_POST)>0)
{
    foreach($_POST as $id=> $value)
    {
    //$id is your id
    //$value is the value on that id    
    //--- here follows the query   ---
    }
}

for($db=0;$db为什么不使用
foreach()


为什么不使用
foreach()


与在
$\u POST
数组的每次迭代中运行条件检查不同,更好的做法是在循环之前过滤
$\u POST
,然后可以在每次迭代中使用(出于安全原因),而不使用任何条件表达式

从示例输入中可以看出,您需要的是空值或数值。此外,数据库表结构通常使用从
1
开始的自动递增
id
。我将提供3种不同的方法,以便您可以为项目选择最有效的方法。所有方法都保留过滤后,
$\u POST
中的原始键(
id

方法#1:(从
$\u POST
中删除所有null、empty、false-y、zero-ish元素)

方法2:(仅允许值大于零的
$\u POST
中的元素)

方法#3:(仅允许来自
$\u POST
的值为整数的元素)

下面是三种方法的一个示例

此外,在Sahil的回答中还有一些不必要的检查

首先,检查
if(is_数组($\u POST))
总是会给出一个
true
结果,因为这是一个数组。如果你不相信我,你可以相信deceze的评论,因为他在用户名后面有一颗奇特的钻石。例外是如果你使用
内容类型:text/xml
,但这次肯定不是这样


其次,在
$\u POST
上检查
count()
是不必要的,因为
foreach()是如果数组为空,则循环甚至不会迭代一次。

与其对
$\u POST
数组的每次迭代都运行条件检查,更好的做法是在循环之前过滤
$\u POST
,然后您可以在每次迭代中使用您的(出于安全原因),而不使用任何条件表达式

从示例输入中可以看出,您需要的是空值或数值。此外,数据库表结构通常使用从
1
开始的自动递增
id
。我将提供3种不同的方法,以便您可以为项目选择最有效的方法。所有方法都保留过滤后,
$\u POST
中的原始键(
id

方法#1:(从
$\u POST
中删除所有null、empty、false-y、zero-ish元素)

方法2:(仅允许值大于零的
$\u POST
中的元素)

方法#3:(仅允许来自
$\u POST
的值为整数的元素)

下面是三种方法的一个示例

此外,在Sahil的回答中还有一些不必要的检查

首先,检查
if(is_数组($\u POST))
总是会给出一个
true
结果,因为这是一个数组。如果你不相信我,你可以相信deceze的评论,因为他在用户名后面有一颗奇特的钻石。例外是如果你使用
内容类型:text/xml
,但这次肯定不是这样


其次,在
$\u POST
上检查
count()
是不必要的,因为如果数组为空,
foreach()
循环甚至不会迭代一次。

为什么不使用foreach($\u POST as$id=>$value)?
foreach($\u POST as$id=>$value)
?感谢大家的评论和回答。现在就可以了!为什么不使用foreach($\u POST as$id=>$value)?
foreach($\u POST as$id=>$value)
?感谢大家的评论和回答。现在就可以了!@FabrizioCocco感谢接受我的帖子…欢迎…)@FabrizioCocco感谢接受我的帖子…欢迎…)
foreach(array_filter($_POST,function($v){return $v>0;}) as $id=>$value){
    // insert your prepared statement query code block here
}
foreach(array_filter($_POST,function($v){return is_int($v);}) as $id=>$value){
    // insert your prepared statement query code block here
}