动态创建目录 returns "Array" 1000 次

Dynamically created directory returns "Array" 1 in 1000 times

我正在修复一些旧代码,这些代码应该根据客户的姓氏为客户创建目录。 1000 次中有 999 次按预期工作,但我时不时收到一条 "Unable to create base directory" 错误消息,调试显示 $file_directory 在那种情况下只是 "Array" 而不是类似"\network\path\order_data34567890_Smith".

任何人都可以解释一下这段代码如何在大多数情况下都能正常工作,但仍然在约 .1% 的实例中始终失败?还是代码以外的东西?谢谢!

注意:我最初并没有写这段代码,但我试图让它尽可能接近原始代码

编辑我之前的代码中有错字,但我认为 tliokos 和 Fluinc 的观点非常好,但我只是想纠正我的错误

代码:

<?php

$file_directory = build_directory($customer, $UID); 

    if(!is_dir($file_directory)){   //Check to make sure it does not already exist
        if(!mkdir($file_directory)){    
            mail("debug@example.com","Unable to create base directory","$file_directory");
        }
    }

function build_directory($customer, $UID){

    if($customer->related_orders){
        $related = explode(",", $customer->related_orders);

        foreach($related as $r_UID){
            $rel_order = get_order($r_UID); //fetches order object

            if((isset($rel_order->file_directory) && $rel_order->file_directory != "")){
                return $rel_order->file_directory;
            }
        }
    }

//Here is where I made my correction
        $paths = array('\\network\path');
        $base = $paths[0];


        //Test if directory is already assigned
        if(is_dir($base . "\order_data\".$UID."_".str_replace(" ","_",$customer->last_name)."\")){ 
            return $base . "\order_data\".$UID."_".str_replace(" ","_",$customer->last_name)."\";
        }

        if($base){
            return $base . "\order_data\".$UID."_".str_replace(" ","_",$customer->last_name)."\";
        }

    }

    ?>

更改 $base = array('\\network\path');
至 $base = '\\network\path';

我认为问题出在 build_directory() 函数中,更具体地说是在第一个 if 之后。

因此,如果客户没有相关订单,您尝试将数组与字符串连接起来,结果类似于

Array\order_data\....

尝试改变

$base = array('\network\path');

$base = '\network\path';

所以问题最终与 framework/user 相关。 我们发现,如果用户在目录创建期间刷新页面,它会创建相同的目录两次,我们的框架会将其保存为相同路径的数组。