2011-12-22 55 views
1

我有一個PHP腳本,讓我們稱之爲main_script.php,如果你通過控制檯運行它返回一堆有趣的數據。是否有可能獲取和提取數組,如果您使用shell_exec函數在php

我有另一個腳本,我們稱之爲second_script.php。 在second_script.php我使用了shell_exec命令如

$main_script = "php main_script.php --array=true"; 
$output = $shell_exec($main_script); 

這將,但是,從main_script.php返回輸出

如果我想main_script.php返回數組。這樣的事情

if ($con->console_parm['array']){ 
    $whatever = array("test"=> "data son!"); 
    return $whatever; 
} 

有沒有一種方法,我可以通過second_script.php執行它,並獲得該數組?

回答

5

如果您在主腳本中使用print serialize($whatever);,並且在第二個腳本中使用$array = unserialize($output);,那麼您基本上最終會獲得主腳本數組的副本。

只要確保主腳本沒有額外的輸出(例如,我不確定空白是如何影響非序列化......但它肯定無法幫助)。如果數組中有對象,請確保這些類在另一個腳本中被加載(或可以自動加載)......否則,最終會出現一堆「不完整的類」對象,這些對象對於許多。

+0

用trim()可以很容易地固定空格。 (它確實打破了非序列化,afaik) – 2011-12-23 00:09:25

+0

哇..我之前使用過序列化和反序列化,但爲什麼它甚至可以用於打印輸出?這是瘋了 – CodeCrack 2011-12-23 00:20:58

+0

'serialize'的全部重點是將一個值轉換成適合寫入流的一串字節。 PHP並不在乎字節是否轉到文件,套接字或管道到另一個進程......它們都以同樣的方式工作。 – cHao 2011-12-23 01:25:49

相關問題