将$ _POST数组元素拉入具有公共前缀的顺序变量中

时间:2010-02-04 05:02:53

标签: php post arrays arraylist

我有一个$ _POST数组,它是从显示的HTML表格中选择(在这种情况下)3行产生的,其中每行都有一个复选框。 ID是每行的唯一标识符。

Array
(
    [checkbox] => Array
        (
            [0] => 001403166
            [1] => 001407509
            [2] => 001407541
        )
)

我想将ID收集到变量中,以便我可以返回并从mysql中提取完整行以进行处理(例如,删除等) - 类似〜

$var1 = 001403166
$var2 = 001407509
$var3 = 001407541

我不知道如何做到这一点(并不罕见),甚至不知道它是什么,以便我可以找到有关它的信息。谢谢你的帮助!

2 个答案:

答案 0 :(得分:5)

extract函数几乎可以满足您的要求:

int extract  ( array $var_array  [, int $extract_type = EXTR_OVERWRITE  [, string $prefix  ]] )
  

将数组中的变量导入   当前的符号表。


我认为,这样的事情应该可以解决问题:

extract($_POST['checkbox'], EXTR_PREFIX_ALL , 'var');

唯一的问题是你会得到名为$var_0$var_1$var_2的变量:

  • 0而不是1开始计算,$_POST['checkbox']中的键从0开始。
  • 并在_和数字之间加上“$var”。


注意:在使用extract之前,您应确保$_POST['checkbox']仅包含“干净”数据!

答案 1 :(得分:1)

您可能还会考虑将此数组插入单个字符串,并使用数据库本机IN()函数来减少为每个行运行单个请求。

$uniqueIDs = array(1111,1222,1333);
$idString  = implode(",",$uniqueIDs);

$query = "SELECT id, col1, col2 
          FROM tableName
          WHERE id IN ({$idString})";

此查询将成为:

SELECT id, col1, col2 
FROM tableName 
WHERE id IN (1111,1222,1333)

选择在该列表中找到ID的行。