阵阵轰动我的脑海

时间:2015-08-12 20:31:44

标签: php arrays

$va_fields = array();
 $c = 0;
$field_num = 'field-'.$c;
settype($c,"integer");

while (isset($_POST[$field_num])){
    $posted_field = $_POST[$field_num];
    $va_fields = array( $c => $posted_field);
    echo $c.': ';
    echo '$posted_field: '.$posted_field;
    $c+=1;
    $field_num = 'field-'.$c;

    echo ' <br /> va_fields - c:'.$va_fields[$c];
    echo ' <br /> ';

}

出于某种原因,我不能为我的生活将变量$ posted_fields变成数组。

$ posted_field的值是我需要它们的值,所以我从帖子中获取数据。然后我尝试将它们存储在一个数组中,并检查数组,它们不在那里。我做错了什么?

编辑:这是我的表格:

      <form method="post" action="<?php echo get_site_url(); ?>/wp-admin/admin-post.php">
        <input type="hidden" name="action" value="cpt_field_opts" />
     <!-- some inputs here ... -->
     <?php wp_nonce_field( 'cpt_field_opts', '_wp_nonce' ); ?>
     <input type="hidden" name="post_type" value="<?php echo $post_type; ?>">
     <input type="hidden" name="origin" value="<?php echo "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?>" />
<?php
    $c = 0;
    foreach ($fields as $field){
         ?>
    <input type="textarea" id="field-<?php echo $c; ?>" name="field-<?php echo $c; ?>" value="<?php echo $field; ?>" size="25" /></br>
        <?php
        $c += 1;
        }
?>
    <input type="submit" value="Submit" >
</form>
<form method="post" action="<?php echo get_site_url(); ?>/wp-admin/admin-post.php">
         <?php wp_nonce_field( 'cpt_field_opts_new', '_wp_nonce_2' ); ?>
    <input type="hidden" name="post_type" value="<?php echo $post_type; ?>" />
            <input type="hidden" name="action" value="cpt_field_opts_new" />
            <input type="hidden" name="origin" value="<?php echo "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?>" />
    <input type="submit" value="New" />
</form>

很多人都告诉我将数组重写为这一行:

    $va_fields[$c] = $posted_field;

我已经完成了,但我也从那开始,但仍然无法正常工作

2 个答案:

答案 0 :(得分:2)

如果$_POST中有一堆值的名称如“field-0”,“field-1”等,并且您正试图将它们放入数组中:

$c = 0;
while (isset($_POST["field-$c"])){

    // This creates a new element in $va_fields with key=$c and value=$_POST["field-$c"]
    $va_fields[$c] = $_POST["field-$c"];

}

var_dump($va_fields); // should show you the array you want

但实际上,只需修改表单以使用name=field[]输入而不是对其进行编号会更容易。然后你就可以在$_POST['fields']中拥有数组,而无需做任何事情。

答案 1 :(得分:-1)

只需迭代$ _POST数组

即可
<?php
  $va_fields = array();
  $c=0;      
  foreach($_POST as $val){
    echo '$posted_field: '. $val;
    $va_fields[$c] = $val;
  }
  var_dump($va_fields);
?>