Php 如何抛出异常,但在消息中包含参数?

Php 如何抛出异常,但在消息中包含参数?,php,Php,最好的方法是什么: $params = array ('a' => 'b', 'c' => 'd'); // etc etc throw new Exception( "Could not do something because params << insert parameters >> was bad", $code ); 您可以使用sprintf函数 如果数组值/索引的计数为常量,则可以执行以下操作: throw new Exc

最好的方法是什么:

$params = array ('a' => 'b', 'c' => 'd'); // etc etc

throw new Exception(
   "Could not do something because params << insert parameters >> was bad",  
    $code
 );
您可以使用sprintf函数


如果数组值/索引的计数为常量,则可以执行以下操作:

throw new Exception(
    sprintf("Could not do something because params {$params['a']}, {$params['b']} was bad"),  
    $code
);
如果数组中有不同数量的值,可以如下处理:

"Could not do something because params: a = b, c = d was bad",  
throw new Exception(
    sprintf("Could not do something because params " . implode(', ', $params) . " was bad"),  
    $code
);
如果还需要为每个值包含数组键,则必须执行类似的操作:

$excParams = array();
foreach ($params as $key => $val) {
    $excParams[] = "{$key} = {$val}";
}

throw new Exception(
    sprintf("Could not do something because params " . implode(', ', $excParams) . " was bad"),  
    $code
);
$excParams = array();
foreach ($params as $key => $val) {
    $excParams[] = "{$key} = {$val}";
}

throw new Exception(
    sprintf("Could not do something because params " . implode(', ', $excParams) . " was bad"),  
    $code
);