我对PHP关联数组的序列化感到有些困惑

Tho*_*ens 0 php arrays serialization

a:3:{i:0;i:4;i:1;i:3;i:2;i:2;}
Run Code Online (Sandbox Code Playgroud)

难道我说得对,这是大小3其中关键值对的数组0->4,1->32->2

如果是这样,我发现这种表现非常令人困惑.起初,我认为它是值列表(或包含的数组{0, 4, 1, 3, 2, 2}),但我认为a:3:是数组的大小.如果3是大小,那么键和值都出现在括号中,无法清楚地识别键/值对而不计算.

澄清我来自哪里:

为什么PHP开发人员选择以这种方式序列化?这有什么优势,让我们说var_dump和/或var_export显示其数据的方式?

Gre*_*reg 5

是的,是的 array(4, 3, 2)

a对于数组,i对于整数作为键然后是值.您必须计算到特定的一个,但PHP总是反序列化整个批次,所以无论如何它都有一个计数.

编辑:当你习惯它时,它不会太混乱,但它可能有点啰嗦,例如JSON

注意:var_export()不处理循环引用,因为它几乎不可能生成可解析的PHP代码.如果要对数组或对象的完整表示执行某些操作,请使用serialize().