2012-07-20 186 views
-1

我從使用var_export的html表單獲取信息。將數組傳遞給函數php

$info = var_export($_POST); 

echo '<pre>'; 
$info; 
echo '</pre>'; 

當我打印出的$信息的內容是這樣的輸出:

陣列( '姓名'=> '一個', '地址'=> 'B', '城市'=> 'c','state'=>'d','zip'=>'1','phone'=>'2','open'=>'3','close'=>'4',)

這是正確的,但是當我傳遞變量的函數:

validate($info); 
function validate($data){ 
    echo "Hello"; 
    echo '<pre>'; 
    $data; 
    echo '</pre>'; 
} 

,並嘗試打印的內容再次不顯示任何信息。我知道它會進入函數,因爲「Hello」會被打印。這裏發生了什麼?

感謝所有幫助

+2

你覺得呢'var_export()'呢? – zerkms 2012-07-20 02:35:11

+1

@zerkms我看到我在哪裏搞砸了,我相信var_export會自動返回變量表示,現在我發現它必須設置爲true,謝謝你的幫助 – Ameya 2012-07-20 16:06:00

回答

3

試試這個:

function validate($data){ 
    echo "Hello"; 
    echo '<pre>'; 
    print_r($data); 
    echo '</pre>'; 
} 
1

首先,只是把變量不會有輸出它(據我所知)。 echo因爲它只輸出Array類型,所以它不起作用。您將要爲使用var_dump()print_r()

3
$data; 

沒有做任何事情。

嘗試print_r($data);或爲單個數組元素echo $data['name'];

+0

還有一件事 - 在''NULL' $ info' – zerkms 2012-07-20 02:34:59

+0

我會試一下,但爲什麼它早些時候在函數之外工作?它打印到HTML頁面 – Ameya 2012-07-20 04:51:14

+0

@Ameya:因爲'var_export'打印出來。你讀過關於它的手冊頁嗎? http://php.net/var_export – zerkms 2012-07-20 06:49:45

0

又一解決方案:

validate($info); 
function validate($data){ 
    echo "Hello"; 
    echo '<pre>'; 

    // Start capturing output 
    ob_start(); 

    // var_dump() outputs the string. 
    var_dump($data); 

    // print out everything captured since last call to ob_start() 
    echo ob_get_clean(); 

    echo '</pre>'; 
} 

的ob_start()開始捕獲任何輸出。 ob_get_clean()將任何輸出轉儲到一個字符串。這樣做會打印出您在執行var_dump($ data)時看到的內容。

0

var_export結合了將數組轉換爲字符串和打印數據的功能。你不能打印數據(或「回聲」),只需將該變量放置在腳本中,就像使用$info;行一樣。

如果您想按原樣查看數組的內容,請按前面所述使用print_r($array)。如果要查看使用var_export()創建的字符串,請使用echo $data;

print_r($data);將不會像您所描述的那樣工作$data不是數組而是字符串。

這裏是我會做什麼:

function validate($data){ 
    echo "Hello!"; 
    echo "<pre>"; 
    print_r($data); 
    echo "</pre>"; 
} 

validate($_POST); // since you actually must call the function after it's been declared