Как преобразовать массив файловых объектов Phalcon в простой массив массивов? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь преобразовать массив файловых объектов в массив массивов, но я всегда получаю пустые результаты.Я попробовал приведенный ниже код, но он дает мне пустой массив

$json  = json_encode($this->request->getUploadedFiles());
$array = json_decode($json, true);
var_dump($array);exit;

Результат вышеупомянутого var_dump :

array(2) { [0]=> array(0) { } [1]=> array(0) { } }

Массив файлов Объекты из запроса POST:

array(2) { 
    [0]=> object(Phalcon\Http\Request\File)#695 (8) { 
        ["_name":protected]=> string(52) "27657439_10157161194752222_6818734335050869731_n.jpg" 
        ["_tmp":protected]=> string(24) "D:\xampp\tmp\php145A.tmp" 
        ["_size":protected]=> int(31591) 
        ["_type":protected]=> string(10) "image/jpeg" 
        ["_realType":protected]=> NULL 
        ["_error":protected]=> int(0) 
        ["_key":protected]=> string(9) "path_8" 
        ["_extension":protected]=> string(3) "jpg" 
    } 
    [1]=> object(Phalcon\Http\Request\File)#700 (8) { 
        ["_name":protected]=> string(8) "asif.PNG" 
        ["_tmp":protected]=> string(24) "D:\xampp\tmp\php145B.tmp" 
        ["_size":protected]=> int(425449) 
        ["_type":protected]=> string(9) "image/png" 
        ["_realType":protected]=> NULL 
        ["_error":protected]=> int(0) 
        ["_key":protected]=> string(9) "path_14" 
        ["_extension":protected]=> string(3) "PNG" 
    } 
}

Мне нужен результирующий массив, как показано ниже:

array(2) { 
    ["path_8"]=> array(2) { 
        [0]=> array(5) { 
            ["error"]=> int(0) 
            ["name"]=> string(14) "image-name.jpg" 
            ["type"]=> string(10) "image/jpeg" 
            ["tmp_name"]=> string(14) "/tmp/phpqImhgm" 
            ["size"]=> int(222301) 
        } 
        [1]=> array(5) { 
            ["error"]=> int(0) 
            ["name"]=> string(42) "WhatsApp Image 2018-02-20 at 18.48.13.jpeg" 
            ["type"]=> string(10) "image/jpeg" 
            ["tmp_name"]=> string(14) "/tmp/php6HAWpJ" 
            ["size"]=> int(84153) 
        } 
    } 
    ["path_14"]=> array(1) { 
        [0]=> array(5) { 
            ["error"]=> int(4) 
            ["name"]=> string(0) "" 
            ["type"]=> string(0) "" 
            ["tmp_name"]=> string(0) "" 
            ["size"]=> int(0)
         } 
    }
}

ОБНОВЛЕНИЕ: результат var_dump ($ json)

string(7) "[{},{}]"

и var_dump ($ this-> request-> getUploadedFiles ()); exit;результат

array(2) { 
    [0]=> object(Phalcon\Http\Request\File)#673 (8) { 
        ["_name":protected]=> string(52) "27657439_10157161194752222_6818734335050869731_n.jpg" 
        ["_tmp":protected]=> string(24) "D:\xampp\tmp\php33AF.tmp" 
        ["_size":protected]=> int(31591) 
        ["_type":protected]=> string(10) "image/jpeg" 
        ["_realType":protected]=> NULL 
        ["_error":protected]=> int(0) 
        ["_key":protected]=> string(9) "path_8" 
        ["_extension":protected]=> string(3) "jpg" 
    } 
    [1]=> object(Phalcon\Http\Request\File)#695 (8) { 
        ["_name":protected]=> string(8) "asif.PNG" 
        ["_tmp":protected]=> string(24) "D:\xampp\tmp\php33BF.tmp" 
        ["_size":protected]=> int(425449) 
        ["_type":protected]=> string(9) "image/png" 
        ["_realType":protected]=> NULL 
        ["_error":protected]=> int(0) 
        ["_key":protected]=> string(9) "path_14" 
        ["_extension":protected]=> string(3) "PNG" 
    } 
}

1 Ответ

1 голос
/ 20 июня 2019

Самый простой способ - это разобрать так:

$files = [];
foreach($this->request->getUploadedFiles() as $file){
   $item['name']     = $file->getName();
   $item['realType'] = $file->getRealType();
   $item['size']     = $file->getSize();
   ......................................
   $files[] = $item;
}

или вы можете перегрузить класс File: https://github.com/phalcon/cphalcon/blob/master/phalcon/Http/Request/File.zep для реализации ArrayAccess, и вам также потребуется перегрузить класс Request.

...