简体   繁体   English

将相关的POST数据输入转换为序列化数组

[英]Converting associative POST data input into a serialized array

I'm using a multidimensional array in a form and I want to parse these values into a serialized array to be stored in my database. 我正在使用一种形式的多维数组,我想将这些值解析为序列化数组以存储在数据库中。 Here's the relevant section of my HTML form: 这是我的HTML表单的相关部分:

<select name="week_days[monday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>
<select name="week_days[tuesday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>
<select name="week_days[wednesday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>
<select name="week_days[thursday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>

I want to then create an array in my model called week_days. 然后,我想在模型中创建一个名为week_days的数组。 An example of what I want the array to look like is this: 我希望数组看起来像的一个示例是这样的:

array('monday'=>'preferred','tuesday'=>'','wednesday'=>'restricted','thursday'=>'');

I will then serialize() this array for storage in my database. 然后,我将serialize()此数组存储在数据库中。 How do I go about converting the multidimensional array input into an array for serialization? 如何将多维数组输入转换为数组以进行序列化?

当您以表格形式提交时,您将获得一个$_POST['week_days'] ,它等于问题中的数组

Here is some example code to demonstrate: 这是一些示例代码演示:

<pre><?php

if ($_POST['week_days']) {
    print_r($_POST);
    print_r(serialize($_POST['week_days']));
}

?></pre>
<form method="post">
<select name="week_days[monday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>
<select name="week_days[tuesday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>
<select name="week_days[wednesday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>
<select name="week_days[thursday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>
<input type="submit"/>
</form>

Which outputs (based on what's selected): 哪些输出(基于所选内容):

Array
(
    [week_days] => Array
        (
            [monday] => preferred
            [tuesday] => restricted
            [wednesday] => restricted
            [thursday] => preferred
        )

)
a:4:{s:6:"monday";s:9:"preferred";s:7:"tuesday";s:10:"restricted";s:9:"wednesday";s:10:"restricted";s:8:"thursday";s:9:"preferred";}

Well... Quite straightforward really if I've understood you correctly: 好吧,如果我对您的理解正确的话,真的很简单:

$serialized = serialize ( $_POST['week_days'] );

will do what you want... 会做你想要的...

That said, a couple of notes: 也就是说,有几点注意事项:

  • You might want to make a new table where you store the days and have a boolean column for preferred or not 您可能想创建一个新表来存储日期,并有一个布尔列供您选择是否使用
  • This is not a multi-dimensional array, but an associative array =) 这不是多维数组,而是关联数组=)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM