PHP反序列化自定义格式&比较

时间:2016-02-01 10:33:28

标签: php compare

我想将以下字符串转换为数组

{"0":"7","1":"12","2":"14","3":"13"}

我尝试了str_replace'ing但到目前为止这不是一个合适的解决方案。 此外,我检查了php的unserialize()是否可以做到这一点,但这也没有运气。

转换的最佳方式是什么

{"0":"7","1":"12","2":"14","3":"13"}

7,12,14,13

修改

完整的脚本应比较其中两个字符串,以检查其中一个数字是否相同。

所以我们假设字符串A是:

7,12,14,13

字符串B是

4,9,11,12,15

应该将var设置为“true”,因为在两个字符串中都找到了12。 字符串A的格式如上所示,需要反序列化

提前谢谢你!

4 个答案:

答案 0 :(得分:1)

对我来说就像是JSON。

  • 使用a
  • 解码json
  • 使用<= 500
  • 将所有元素解析为整数
  • 在数组上运行json_decode以将其转换回字符串。

快速单线看起来像+/-这个

intval

http://php.net/manual/en/function.json-decode.php

http://php.net/manual/en/function.implode.php

第二个问题

要知道字符串implode和字符串implode(',', array_map("intval", json_decode('{"0":"7","1":"12","2":"14","3":"13"}', true))); 中是否显示任何值,可以使用$A

$B

array_intersect()和`$ B是数组

$var = count(array_intersect(explode(',', $A), explode(',' $B))) > 0;

http://php.net/manual/en/function.array-intersect.php

答案 1 :(得分:0)

您可以使用explode()函数将字符串转换为数组。

declare
  result PKG_USERINFO.TY_USERINFO_TABLE;
begin
  -- calling pipelined function
  result := PKG_USERINFO.FN_GET_USERINFO_ROWS(P_USER_ID => :P_USER_ID);
end;

答案 2 :(得分:0)

您的字符串看起来像JSON字符串。您可以使用PHP中的JSON解析json_decode字符串。然后使用implode函数获取逗号分隔值。

$str = '{"0":"7","1":"12","2":"14","3":"13"}';
$final_str = implode(",",json_decode($str,true));

echo $final_str;

答案 3 :(得分:0)

您可以使用json_decode, explode, implode个功能

$string = '{"0":"7","1":"12","2":"14","3":"13"}';

$result_array = explode(",", implode(',', array_map("intval", json_decode($string, true))));
print_r($result_array);

输出:

Array ( [0] => 7 [1] => 12 [2] => 14 [3] => 13 )