所以我以前曾多次遇到过这个问题,但是我总是会使用 base64_encode / decode 解决这个问题,这样就可以让它立即运行。
但是,在这个应用程序中我不能使用,因为我需要能够查询这个字段,如果编码的话,我也不知道如何做到这一点。
请原谅我的无知,但有没有办法在不使用base64编码的情况下反序列化多维数组呢?
删除字符串并将其转换为整数可以解决问题。所以它是字符串的问题,或者我怀疑"造成问题。无论如何要解决这个问题?
对于此应用程序,数组的第二个元素表示将在其下搜索的格式的日期。理想情况下,我想保留原样,但如果有必要,我想我可以使用一个整数来表示距离常数的天数,然后解释该结果。
// Load Contact from Database
$returnFields = array('_AttendanceRecords');
$Contact = $app->loadCon(39732,$returnFields);
echo "<pre>";
print_r($Contact);
echo "</pre>";
echo $Contact['_AttendanceRecords'] . "</br>";
// To unserialize...
$AttendanceRecordsLoad = unserialize($Contact['_AttendanceRecords']);
echo "<pre>";
print_r($AttendanceRecordsLoad);
echo "</pre>";
阵列( [_AttendanceRecords] =&gt;一个:1:{I:0;一个:;:1; I:1; S:10:&#34; 2015年10月9日&#34 ;; I:3:I 0:I {2; S:1 :&#34; 1&#34 ;;}})
一个:1:{I:0;一个:3:{I:0; I:1; I:1; S:10:&#34; 2015年10月9日&#34 ;; I:2; S:1:&#34; 1&#34 ;;}}
正如你所看到的,最终的print_r是空的,我相信无论出于什么原因它都会返回false。
因此,经过更多的摆弄,我制作了这个新代码:
$ContactId = 39732;
$returnFields = array('_AttendanceRecords');
$Contact = $app->loadCon($ContactId,$returnFields);
echo $Contact['_AttendanceRecords'] . " - IS result </br>";
echo $str = 'a:1:{i:0;a:3:{i:0;i:0;i:1;s:8:"10-10-15";i:2;i:1;}}'; echo " - str result </br>";
// To unserialize...
$AttendanceRecordsLoad = unserialize($Contact['_AttendanceRecords']);
$AttendanceRecordsLoad1 = unserialize($str);
echo "IS<pre>";
print_r($AttendanceRecordsLoad);
echo "</pre>";
echo "str<pre>";
print_r($AttendanceRecordsLoad1);
echo "</pre>";
一个:1:{I:0;一个:3:{I:0; I:0; I:1; S:8:&#34; 15年10月10日&#34 ;; I:2; i:1;}} - IS结果
一个:1:{I:0;一个:3:{I:0; I:0; I:1; S:8:&#34; 15年10月10日&#34 ;; I:2; i:1;}} - str result
IS
STR
阵列( [0] =&gt;排列 ( [0] =&gt; 0 [1] =&gt; 15年10月10日 [2] =&gt; 1 )
)
我不明白。字符串看起来相同。然而,如果数据库包含字符串,那么来自数据库的结果将不会反序列化。
这对任何人都有意义吗?
好的,所以现在我使用了var_dump而不是echo,我得到了这个输出:
string(61)&#34; a:1:{i:0; a:3:{i:0; i:0; i:1; s:8:&#34; 10-10-15& #34 ;; I:2; I:1;}}&#34; - 是的 结果
string(51)&#34; a:1:{i:0; a:3:{i:0; i:0; i:1; s:8:&#34; 10-10-15& #34 ;; I:2; I:1;}}&#34; - str结果
显然他们并不完全相同。但我之前尝试过修剪,现在,它并没有删除任何隐藏的额外字符,这些字符以某种方式已经存放到此字符串中。
这是什么意思,我该如何纠正?
答案 0 :(得分:0)
好看,看看这个问题: SOLUTION FOUND - Same strings, but var_dump() says one is 5 characters longer
修复程序在数据库返回的结果上使用了这个:
html_entity_decode($string], ENT_QUOTES)
希望能帮助别人。