首頁 後端開發 php教程 如何從 PHP 中的 var_dump 輸出重新建立數組?

如何從 PHP 中的 var_dump 輸出重新建立數組?

Oct 27, 2024 am 03:45 AM

How can you recreate an array from var_dump output in PHP?

從var_dump 輸出中恢復數組資料

而var_export 和serialize 分別提供了方便的解決方案,用於將數組轉換為人類可讀的字串並重建它們,它們不足以應對此程式碼挑戰。這裡的目標是探索一種最佳化且創造性的方法來從 var_dump 的輸出中提取數組結構。

用於數組提取的自定義函數

解決方案涉及轉換var_dump 輸出轉換為序列化字串,然後可以將其反序列化以重新建立原始數組。為此,使用了unvar_dump() 函數:

程式碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

<code class="php">function unvar_dump($str) {

    if (strpos($str, "\n") === false) {

        //Add new lines:

        $regex = array(

            '#(\[.*?\]=&gt;)#',

            '#(string\(|int\(|float\(|array\(|NULL|object\(|})#',

        );

        $str = preg_replace($regex, "\n\1", $str);

        $str = trim($str);

    }

    $regex = array(

        '#^\040*NULL\040*$#m',

        '#^\s*array\((.*?)\)\s*{\s*$#m',

        '#^\s*string\((.*?)\)\s*(.*?)$#m',

        '#^\s*int\((.*?)\)\s*$#m',

        '#^\s*bool\(true\)\s*$#m',

        '#^\s*bool\(false\)\s*$#m',

        '#^\s*float\((.*?)\)\s*$#m',

        '#^\s*\[(\d+)\]\s*=&gt;\s*$#m',

        '#\s*?\r?\n\s*#m',

    );

    $replace = array(

        'N',

        'a:\1:{',

        's:\1:\2',

        'i:\1',

        'b:1',

        'b:0',

        'd:\1',

        'i:\1',

        ';'

    );

    $serialized = preg_replace($regex, $replace, $str);

    $func = create_function(

        '$match',

        'return "s:".strlen($match[1]).":\"".$match[1]."\"";'

    );

    $serialized = preg_replace_callback(

        '#\s*\["(.*?)"\]\s*=&gt;#',

        $func,

        $serialized

    );

    $func = create_function(

        '$match',

        'return "O:".strlen($match[1]).":\"".$match[1]."\":".$match[2].":{";'

    );

    $serialized = preg_replace_callback(

        '#object\((.*?)\).*?\((\d+)\)\s*{\s*;#',

        $func,

        $serialized

    );

    $serialized = preg_replace(

        array('#};#', '#{;#'),

        array('}', '{'),

        $serialized

    );

 

    return unserialize($serialized);

}

&lt;/pre&gt;

 

**Usage:**

 

To use the function, simply pass the var_dump output as the input:

</code>

登入後複製

$originalArray = unvar_dump(var_dump($data));

以上是如何從 PHP 中的 var_dump 輸出重新建立數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

Instagram API簡介 Instagram API簡介 Mar 02, 2025 am 09:32 AM

Instagram API簡介

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

Laravel中的通知 Laravel中的通知 Mar 04, 2025 am 09:22 AM

Laravel中的通知

See all articles