如何从PHP中的函数返回一个数组?

时间:2018-01-18 20:13:19

标签: php return

当我在返回语句之前转储数组时,一切似乎都很好。 但是,当我转储结果时,它似乎是空的。

包含的代码应该更清楚。我从DatabaseHandler调用GetRow,当我在返回之前进行转储时,我可以看到有一个数组。 (见var_dump)

public static function GetRow($sqlQuery, $params = null,
                            $fetchStyle = PDO::FETCH_ASSOC)
 {
// Initialize the return value to null
$result = null;

// Try to execute an SQL query or a stored procedure
try
{
  // Get the database handler
  $database_handler = self::GetHandler();

  // Prepare the query for execution
  $statement_handler = $database_handler->prepare($sqlQuery);

  // Execute the query
  $statement_handler->execute($params);

  // Fetch result
  $result = $statement_handler->fetch($fetchStyle);
}
// Trigger an error if an exception was thrown when executing the SQL query
catch(PDOException $e)
{
  // Close the database handler and trigger an error
  self::Close();
  trigger_error($e->getMessage(), E_USER_ERROR);
}

// Return the query results
  exit(var_dump($result)); // SHOWS A PROPER ARRAY
return $result;
}

在另一个调用它的函数中,没有什么可看的(假):

// Gets the details of a specific order
public static function GetOrderInfo($orderId)
{
// Build the SQL query
$sql = 'CALL orders_get_order_info(:order_id)';

// Build the parameters array
$params = array (':order_id' => $orderId);

// Execute the query and return the results
  $result = DatabaseHandler::GetRow($sql, $params);
  exit(var_dump($result)); // SHOWS FALSE
  return $result
}

3 个答案:

答案 0 :(得分:0)

来自文档http://php.net/manual/en/function.exit.php

  

终止脚本的执行

换句话说,return语句是不可缓存的。所以你的代码永远不会返回,因为进程在它之前退出。

答案 1 :(得分:0)

不要打电话退出。在参数/返回值方面,PHP中的数组没有什么特别之处 - 问题是你终止了exit()调用。

答案 2 :(得分:-1)

当PDO返回一个数组时,它对于foreach,while或json_encode(无效参数)等函数无法使用。

解决方案是使用MySQLi,它返回完全相同的数组,只是这次它可用于foreach,while或json_encode等函数。