访问在foreach循环中创建的数组值

时间:2015-06-24 15:38:10

标签: php arrays foreach symfony-1.4

如果文件没有上传,我试图显示错误。我的问题的关键是我的$ status()数组没有返回我在foreach循环中的if语句中追加的值。

有人可以告诉我发生了什么以及我做错了什么吗?我希望foreach循环中的状态值能够追加并返回循环外部。

以下代码。

$status = array();

// Check that file within size restrictions, then upload.
foreach($request->getFiles() as $file)
{
    $file_dir = sfConfig::get("sf_data_dir") . '/retail/order/' . $order_id . '/';

    if (!is_dir($file_dir))
    { 
        mkdir($file_dir, 0777, true);
    }

    $maxsize    = 332027;

    if(($file['size'] >= $maxsize) || ($file['size'] == 0)) 
    {
        $status[] = 0;
    }
    else
    {
        move_uploaded_file($file['tmp_name'], $file_dir . $file['name']);

        $attachment = new Attachment();
        $attachment->setName($file['name']);
        $attachment->setPath($file_dir);
        $attachment->setSize($file['size']);
        $attachment->setCreatedTs('now');
        $attachment->save();

        $app_attachment = new ApendedAttachment();
        $app_attachment->setAttachmentId($attachment->getAttachmentId());
        $app_attachment->setWebOrderId($order_id);
        $app_attachment->setCreatedTs('now');
        $app_attachment->save();

        $status[] = 1;
    }
}

if (in_array(1, $status))
{
    $this->getUser()->setFlash('success', 'Thank you. Your cart has been saved.');
}
else
{
    $this->getUser()->setFlash('error', 'Please upload files less than 20MB.');
}

$this->redirect('order/detail?id=' . $order->getWebOrderId());

1 个答案:

答案 0 :(得分:0)

您没有正确地为状态数组分配值。您可能希望在浏览文件数组时增加索引:

$i = 0;
for each(){
...
$status[$i] = 1;
...
$i++;
}

对于错误的代码格式感到抱歉。在我的移动设备上执行此操作。