【发布时间】:2013-05-19 13:33:04
【问题描述】:
我的 PHP 脚本正在从 HTML 输入中以数组的形式接收数据:
<input type="checkbox" name="value[]" value="1" />
<input type="checkbox" name="value[]" value="2" />
<input type="checkbox" name="value[]" value="3" />
...
我目前的序列化方法是这样的:
<?php
class DataClass {
private $separator = ",";
private function sanitize($input){
$patterns = array(
'/^'.$this->separator.'/',
'/'.$this->separator.$this->separator.'/',
'/'.$this->separator.'$/'
);
$replacements = array(
'',
$this->separator,
''
);
return preg_replace($patterns, $replacements, $input);
}
public function deserialize($input){
return explode($this->separator, $this->sanitize($input));
}
private function serialize($input){
$bucket = array();
if(is_array($input)):
foreach($input as $value){
if(!empty($value)):
array_push($bucket, $value);
endif;
}
return $this->sanitize(implode($this->separator, $bucket));
else:
return "";
endif;
}
public function store($formdata) {
$formdata['value'] = empty($formdata['value']) ? '' : $this->serialize($formdata['value']);
// save $formdata to database
}
}
?>
所以,在阅读this post 之后,我的问题是:
- 优化现有代码效率的最佳方法是什么?
- 使用不同的方法将简单的索引数组转换为可以存储在数据库中的东西是否会带来任何性能优势?
- 使用 BLOB 列类型与我目前使用的 varchar(255) 相比如何?
- 既然它不是一个关联数组,那么
json_encode会是正确的方法,还是只是矫枉过正?
【问题讨论】:
-
为什么不直接使用内置的
serialize()函数呢?
标签: php arrays json performance serialization