Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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 清理并添加具有未知字段数的Post Meta_Php_Wordpress_Loops - Fatal编程技术网

Php 清理并添加具有未知字段数的Post Meta

Php 清理并添加具有未知字段数的Post Meta,php,wordpress,loops,Php,Wordpress,Loops,我有一个像这样的领域 <input type="text" name="summary" value="" required /> <input type="text" name="cat_01" value="" /> <input type="number" name="dog_01" value="" /> <input type="number" name="rabbit_01" value="" /> <input type="t

我有一个像这样的领域

<input type="text" name="summary" value="" required />
<input type="text" name="cat_01" value="" />
<input type="number" name="dog_01" value="" />
<input type="number" name="rabbit_01" value="" />
<input type="text" name="mouse_01" value="" />

<input type="text" name="cat_02" value="" />
<input type="number" name="dog_02" value="" />
<input type="number" name="rabbit_02" value="" />
<input type="text" name="mouse_02" value="" />
    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );
但是当涉及到我需要存储在DB中的额外post_meta时,我不知道如何进行,因为我不知道表单中会有多少额外字段。这将有所不同

    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );
所以额外的表单字段可能是这样的

<input type="text" name="summary" value="" required />
<input type="text" name="cat_01" value="" />
<input type="number" name="dog_01" value="" />
<input type="number" name="rabbit_01" value="" />
<input type="text" name="mouse_01" value="" />

<input type="text" name="cat_02" value="" />
<input type="number" name="dog_02" value="" />
<input type="number" name="rabbit_02" value="" />
<input type="text" name="mouse_02" value="" />
    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );

…但有时可能会有第三组字段,或第四组字段等,而且实际上没有限制,我不知道会有多少组字段

    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );
例如,如果有第三组这些字段,它们将如下所示:

<input type="text" name="cat_03" value="" />
<input type="number" name="dog_03" value="" />
<input type="number" name="rabbit_03" value="" />
<input type="text" name="mouse_03" value="" />
    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );

所以你明白了

    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );
当我不知道我将要捕获什么时,我如何进行清理并添加_post_meta

    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );

干杯。

您可以使用
foreach
迭代任意数量的字段。
    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );
例如:

    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );

为什么不让自己轻松一点,并将所有这些数据保存在一个数组中,如下所示:

<!-- With type -->
<input type="text" name="animal[dog][]" value=""/>
<input type="text" name="animal[cat][]" value="" />
<!-- No Type -->
<input type="text" name="animal[]" value="" />
    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );
这与我已经创建的类似,字段是动态完成的,我们不知道需要节省多少

    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );

我希望这将为您提供一个如何制作的指南。

在下面的代码中,我使用了一个限制为4的数组,直到您使用了您的动物集。然后检查哪个是发布的,然后调整post变量

    $sanited_array = array();
    for($i = 1 ; $i < 4 ; $i++)
    {

    if(isset($_POST['cat_0'.$i]))
    {
        $sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
    }
    if(isset($_POST['dog_0'.$i]))
    {
        $sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
    }
    if(isset($_POST['rabbit_0'.$i]))
    {
        $sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
    }
    if(isset($_POST['mouse_0'.$i]))
    {
        $sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
    }
}
update_post_meta( $post_id, 'animal', $sanited_array );
$sanited_array=array();
对于($i=1;$i<4;$i++)
{
如果(isset($\u POST['cat\u 0'.$i]))
{
$sanited_数组['cat'][]=sanitize_文本_字段($\u POST['cat_0'.$i]);
}
如果(isset($\u POST['dog\u 0'.$i]))
{
$sanited_数组['dog'][]=sanitize_文本_字段($\u POST['dog_0'.$i]);
}
如果(isset($\u POST['rabbit\u 0'.$i]))
{
$sanited_数组['rabbit'][]=清理_文本_字段($\u POST['rabbit_0'.$i]);
}
如果(isset($\u POST['mouse\u 0'.$i]))
{
$sanited_数组['mouse'][]=sanitize_文本_字段($\u POST['mouse_0'.$i]);
}
}
更新_post_meta($post_id,$animal',$sanited_数组);

对于那些不熟悉PHP处理POST变量的人来说,这依赖于PHP内置的对提交值的折叠,将以“[]”结尾的名称折叠成一个数组。顺序应始终与DOM顺序相同