我有一个查询,它从基于Order_ID的数据库中获取一些文件名。许多文件可能与一个订单相关联。查询看起来像
$download2 = xtc_db_query("SELECT orders_products_filename FROM orders_products_download WHERE orders_id='".$last_order."'");
while ($activated2 = xtc_db_fetch_array($download2))
{
$file = $activated2['orders_products_filename'];
$pieces = explode(".zip", $file);
print_r ($pieces);
if(file_exists($pieces.'.zip'))
{ echo "1"; }
if(!file_exists($pieces.'.zip'))
{ echo "2"; }
}
我想做的是在文件存在或不存在时触发一个动作。由于$pieces
是一个数组,file_exists
假设整个数组是一个文件,它不工作(它总是回声2)。如果有人给我一个提示如何解决这个问题,那将是伟大的。
我想你是在找这样的东西:
foreach ($pieces as $piece) {
if (file_exists($piece . '.zip')) {
echo '1';
} else {
echo '2';
}
}
或者可以在数组上运行过滤器,以获得存在的文件列表,例如:
$existingFiles = array_filter(
$pieces,
function ($piece) { return file_exists($piece . '.zip'); }
);
file_exists();
需要绝对路径,请确保您传递的是绝对路径
关于代码,我会建议一些改进,虽然这与你所要求的问题无关。
if(file_exists($pieces.'.zip')) {
echo "1";
}
if(!file_exists($pieces.'.zip')) {
echo "2";
}
可以写成
if(file_exists($pieces.'.zip')) {
echo "1";
} else {
echo "2";
}
不需要调用file_exists 2次
如果你的目的是返回整数值,那么你可以尝试三元运算符。
echo file_exists($pieces.'.zip') ? 1 : 2;