【问题标题】:PHP Warning: implode()PHP 警告:内爆()
【发布时间】:2018-01-09 22:14:55
【问题描述】:

我收到以下错误... HP 警告:implode() [function.implode]: Argument must be an array

if (!empty($_FILES) && in_array('adjunto', array_keys($_FILES) ) ) {
    $mail->AddAttachment( $_FILES['adjunto']['tmp_name'],$_FILES['adjunto']['name'] );        
}               
error_log(" Files ".implode("",array_keys($_FILES)).' '.implode( array_keys($_FILES['adjunto']) ).date('Y/m/d H:i:s')."\n",3,"./adjuntos/log.log");
$mail->Send();

【问题讨论】:

  • @Jeff implode() 可以用一个参数调用,它是数组,分隔符默认为空字符串。
  • 仅供参考,in_array('adjunto', array_keys($_FILES) 可以简化为 array_key_exists($_FILES, 'adjunto')isset($_FILES['adjunto'])

标签: php arguments implode


【解决方案1】:

您的error_log() 调用不在if 块内。因此,即使此密钥不存在,它也会尝试使用array_keys($_FILES['adjunto'])。这将返回null,然后您将尝试使用implode(null)

简单的解决方案是将error_log() 移动到if 内。

if (!empty($_FILES) && in_array('adjunto', array_keys($_FILES) ) ) {
    $mail->AddAttachment( $_FILES['adjunto']['tmp_name'],$_FILES['adjunto']['name'] );      
    error_log(" Files ".implode("",array_keys($_FILES)).' '.implode( array_keys($_FILES['adjunto']) ).date('Y/m/d H:i:s')."\n",3,"./adjuntos/log.log");  
}               

$mail->Send();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多