将数组转换为其他类型

时间:2018-08-20 22:07:41

标签: php wordpress

很久没接触过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

谢谢。

1 个答案:

答案 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,它的风险也较小,并且可以处理更多的情况(尽管那里的代码使用略有不同的格式,所以您可能必须适应它)。