很久没接触过PHP了,有点生锈。我需要从这里出发的一些指导。
我有两个要比较的数组,要找出它们之间的区别,但是由于它们的格式不正确,所以我无法比较这两个数组。
我不确定该调用哪种格式,通常也不会深入研究PHP领域。
这是我要转换的第一个数组:
Array (
[0] => 2018-08-21 10:00:00
[1] => 2018-08-28 10:00:00
[2] => 2018-09-04 10:00:00
[3] => 2018-09-11 10:00:00
[4] => 2018-09-18 10:00:00
)
我想转换成这样的东西:
Array (
'0' => '2018-08-21 10:00:00',
'1' => '2018-08-28 10:00:00',
'2' => '2018-09-04 10:00:00',
'3' => '2018-09-11 10:00:00',
'4' => '2018-09-18 10:00:00'
)
完成此操作后,可以使用array_diff将其与另一个数组进行比较,但是直到那时我还是有点卡住了。任何帮助将不胜感激。
我要比较的第二个数组的格式相同。但是具有不同的价值。
这是我的问题:https://3v4l.org/f734u。
以下是我想要的示例:https://3v4l.org/oeXHR。
谢谢。
答案 0 :(得分:0)
如果您绝对确定,则第一个数组字符串中的数据是安全的,并且始终采用这种方式,您可以执行以下操作将其转换为真实数组:
$array_string = 'Array ( [0] => 2018-08-21 10:00:00 [1] => 2018-08-28 10:00:00 [2] => 2018-09-04 10:00:00 [3] => 2018-09-11 10:00:00 [4] => 2018-09-18 10:00:00 )';
$array_string = preg_replace('/\[(\d+)\] => (.*?)(?=\s+[[)])/s', "'$1' => '$2',", $array_string);
eval("\$array1 = $array_string;");
// $array1 contains the array
演示在这里: https://3v4l.org/G2B5i
或者(更安全),您可以使用具有相同模式的preg_match_all
并自己手动构建数组。
您也可以go through serialized form/deserialization,它的风险也较小,并且可以处理更多的情况(尽管那里的代码使用略有不同的格式,所以您可能必须适应它)。