数组:基于语法的“s:”值是什么?

时间:2011-10-25 21:04:07

标签: php mysql arrays serialization

我需要导入一个复选框数组,但是有一个值我不知道如何确定。

该数组基于我创建的用户元选项,该选项显示类别复选框选项列表。它会抓取所有类别并创建一个可以保存到用户配置文件的复选框选项。这些类别有不同的级别(父级,子级或子级)。

这是我用于创建用户元选项的编码的一部分:

$args = array( 'hide_empty' => 0, 'taxonomy'=> 'category');
$categories =  get_categories($args);

if ($categories){
                        foreach ( $categories as $category ){ 
                            if(in_array($category->term_id,(array)$data)) {
                                $selected = 'checked="checked""';
                            } else {
                                $selected = '';
                            }
                            echo '<input name="user_cats[]" value="'.$category->term_id.'" '.$selected.' type="checkbox"/> '.$category->name.'<br/>';
                        }
                    }

在测试保存了一些复选框选项后,我检查了“user_cats”字段的数据库值,它给出了类似这样的内容:

一个:2:{的 I :0; 取值:2: “20”; I : 1; 取值:3: “343”;}

现在,我知道除了其中一个变量之外的所有变量。

a =值/选择的总量(数量)

i =值/选择的序号(*从0开始)

“X” =括号内的数字值是

我的问题是,基于的 s:值是多少?我问的原因是因为我编译了一个包含1,300条记录的csv文件,我不知道如何确定 s:值。我尝试给s:常量值为2,但在导入值后,未根据导入的数组选择选项。那没用。

所以我觉得选择正确的选项是基于 s:值。如果我能够导入没有当前语法的数组,那么另一种选择就是。

我花费了时间手动编译带有excel函数和技巧的文件,这是唯一的路障。对此的任何帮助将是一个主要的救世主。

3 个答案:

答案 0 :(得分:3)

s代表 string

s:2:"20"是长度为2的字符串,其值为20

此格式是PHP serialization的结果。

答案 1 :(得分:3)

这是php序列化格式:

a:2 - array with 2 elements
s:2 - string 2 characters long
i:0 - integer with value "0"

答案 2 :(得分:3)

a:2:{i:0;s:2:"20";i:1;s:3:"343";}是序列化字符串。

您可以拨打unserialize来解决此问题。

var_dump(unserialize('a:2:{i:0;s:2:"20";i:1;s:3:"343";}');

#result
array
  0 => string '20' (length=2)
  1 => string '343' (length=3)

因此,您可以将其分解为以下内容:

a:2        - array of length 2.
i:0        - index 0
s:2:20     - string of length 2 value "20"
i:1        - index 1
s:3:343    - string of length 3 value "343"