2014-12-06 69 views
1
我在一個單獨的文件中使用函數

使用函數的返回值,即得到應返回我的數組包含字段的枚舉值:從另一個文件中的PHP

<?php 
function getEnumValues($table, $field) { 
$enum_array = array(); 
$query = "SHOW COLUMNS FROM '{$table}' WHERE Field = '{$field}'"; 
$result = mysqli_query($query); 
$row = mysqli_fetch_row($result); 
preg_match_all('/\'(.*?)\'/', $row[1], $enum_array); 
return $enum_array; 
} 
?> 

,並在主要文件,我這樣做:

<?php 
require 'common.php'; 
for ($i=0; $i <= 5; $i++) { 
       getEnumValues(property, value_type); 
       echo "<input type='radio' name='tipo_valor' value='$enum_array[$i]' required>" . ' ' .$enum_array[$i] . '<br>'; 
      } 
?> 

問題是該函數沒有返回任何內容。

那麼,我需要什麼功能? 我可以使用另一個文件中返回的變量作爲局部變量嗎?

感謝您的時間和建議!

回答

2

函數返回一個值;你只是沒有捕獲它。函數體中的$ enum_array只存在於該函數的作用域中。你需要把函數的返回值放在一個變量中。在你的主文件:

<?php 
require 'common.php'; 
for ($i=0; $i <= 5; $i++) { 
      $enum_array = getEnumValues(property, value_type); 
      echo "<input type='radio' name='tipo_valor' value='$enum_array[$i]' required>" . ' ' .$enum_array[$i] . '<br>'; 
     } 
?> 
+1

如果財產和VALUE_TYPE是內環路參數不變,那麼這將是更高效的移動函數調用上面的for循環,而不是每次調用它的循環迭代。如果$ enum_array在循環過程中不變,則沒有必要重新運行該函數。 – 2014-12-06 21:29:42

+0

的確,謝謝......菜鳥的錯誤...... :) – 2014-12-06 21:41:30