在php中创建$ _POST数组中的变量

时间:2016-01-08 01:50:01

标签: php arrays post

我的$_POST数组看起来像这样:

Array
(
    [veryfy_doc_type] => Array
            (
                [0] => 1
                [1] => 2
            )

    [id_number] => Array
            (
                [0] => 3242424
                [1] => 4456889
            )

    [document_issuer] => Array
            (
                    [0] => 1
                    [1] => 3
            )

    [verify_doc_expiry_date] => Array
            (
                    [0] => 2016-01-26
                    [1] => 2015-02-20
            )

    [doc_id] => Array
            (
                    [0] => 15
                    [1] => 16
            )

    [user_id] => Array
            (
                    [0] => 14
                    [1] => 14
            )
)

使用这个数组我需要将每个值都放到php变量中。

我试过这样的东西,但它对我不起作用。

foreach($_POST AS $k => $v) { 
    //print_r($v); 
    list($doc_type, $id_number, $issuer, $expiry_date, $doc_id, $user_id) = $v;
}

echo "Type = $doc_type";

任何人都可以告诉我如何解决这个问题。 谢谢。

6 个答案:

答案 0 :(得分:2)

这可能会对您有所帮助,因为您还可以在php中使用extract来创建变量。

<?php
$_POST = array(
    'veryfy_doc_type'=> array(1,2),
    'id_number' => array(3242424,4456889),
    'document_issuer'=> array(1,3),
    'verify_doc_expiry_date'=> array('2016-01-26','2015-02-20'),
    'doc_id' => array(15,16),
    'doc_id' => array(14,14)
);


extract($_POST);
print_r($veryfy_doc_type);
print_r($id_number);

答案 1 :(得分:1)

所以你想在循环主数组的同时引用每个子数组值...可能是这样的吗?

// Loop one of the sub arrays - you need to know how many times to loop!
foreach ($_POST['veryfy_doc_type'] as $key => $value) {
    // Filter the main array and use the $key (0 or 1) for the callback
    $rowValues = array_map(function($row) use ($key) {
        // Return the sub-array value using the $key (0 or 1) for this level
        return $row[$key];
    }, $_POST);

    print_r($rowValues);
}

示例:https://eval.in/498895

这将为每组数据提供结构化数组。

从这里开始,我建议您保留数组,而不是导出到变量,但如果您愿意,可以使用示例中的list()

答案 2 :(得分:1)

您可以使用MultipleIterator

<?php
$post = array(
    'veryfy_doc_type' => array('1','2'),
    'id_number' => array('3242424','4456889'),
    'document_issuer' => array(1,3),
    'verify_doc_expiry_date' => array('2016-01-26','2015-02-20'),
    'doc_id' => array(15,16),
    'user_id' => array(14,14)
);


$mit = new MultipleIterator(MultipleIterator::MIT_NEED_ALL|MultipleIterator::MIT_KEYS_ASSOC);
foreach($post as $k=>$v) {
    $mit->attachIterator( new ArrayIterator($v), $k);
}


foreach( $mit as $row ) {
    echo $row['doc_id'], ' ', $row['id_number'], ' ', $row['verify_doc_expiry_date'], "\r\n";
}

打印

15 3242424 2016-01-26
16 4456889 2015-02-20

如果您可以控制客户端代码,则可以通过php自动构建此结构的方式更改POST参数的名称。例如。

<form method="POST" action="test.php">
    <input type="hidden" name="record[0][veryfy_doc_type]" value="1" />
    <input type="hidden" name="record[0][id_number]" value="3242424" />
    <input type="hidden" name="record[0][document_issuer]" value="1" />
    <input type="hidden" name="record[0][verify_doc_expiry_date]" value="2016-01-26" />
    <input type="hidden" name="record[0][doc_id]" value="15" />
    <input type="hidden" name="record[0][user_id]" value="14" />

    <input type="hidden" name="record[1][veryfy_doc_type]" value="2" />
    <input type="hidden" name="record[1][id_number]" value="4456889" />
    <input type="hidden" name="record[1][document_issuer]" value="3" />
    <input type="hidden" name="record[1][verify_doc_expiry_date]" value="2015-02-20" />
    <input type="hidden" name="record[1][doc_id]" value="16" />
    <input type="hidden" name="record[1][user_id]" value="14" />

    <input type="submit" />
</form>

会这样做。

答案 3 :(得分:0)

如果您只想获得帖子的值,那么您可以拥有一个简单的多维数据循环。没有必要做广泛的

   foreach($_POST as $keyName => $row){
      // $keyName will be verify_doc_type, id_number, etc..
      foreach($row as $value){
      // do something
      echo $value;
     }
  }

希望有所帮助。

答案 4 :(得分:0)

此方法将生成与POST数组中名称相同的变量:

    foreach ($_POST as $k => $v )
    {
        $$k =  addslashes(trim($v ));
    
    }

答案 5 :(得分:0)

我知道这篇文章有点旧,但我最近也在努力实现同样的目标。

希望答案会为其他人指明正确的方向。

根据 list() 上的文档:

<块引用>

自 PHP 7.1 起,可以指定键

手册中的示例:

<?php
  $arr = ['locality' => 'Tunis', 'postal_code' => '1110'];

  list('postal_code' => $zipCode, 'locality' => $locality) = $arr;

  echo $zipCode; // will output 1110
  echo $locality; // will output Tunis
?>

https://www.php.net/manual/en/function.list.php#121094