如何将对象转换为数组Symfony2

时间:2016-03-07 07:18:13

标签: php arrays symfony

我有一个名为Property的对象,如何将其转换为数组

/**
 * @Route("/property/{id}/pictures/download_all", name="property_zip_files_and_download", methods={"GET"})     
 */
public function zipFilesAndDownloadAction(Property $property)
{
    $pictures = $property->pictures;
$compressPath = $this->get('some_service.property.picture_compress')->compress($pictures);
//some code for download...
....
}

如何将图片转换为数组并将其传递给我的服务?谁能请你帮帮我

2 个答案:

答案 0 :(得分:0)

什么是图片?

在简单的情况下,您可以使用(array) $pictures

此外,您可以使用Serializer Normalizers

如果变量为Iterator(例如ArrayCollection或PersistentCollection)且服务方法具有array作为类型提示,则可以将其转换为具有iterator_to_array函数的简单数组。

尝试:

$compressPath = $this->get('some_service.property.picture_compress')->compress(iterator_to_array($pictures));

答案 1 :(得分:0)

这就是我将模型MyObject对象转换为数据数组的方法。

class MyObject{

    public function getContentArr($objInstance, $filter=true){

        $arr = array();

        if($objInstance){
            $response = new Response(GeneralFunctions::getKernel()->getContainer()->get('serializer')->serialize($objInstance, 'json'));

            $arr = json_decode($response->getContent(), true);

            //remove all items that are null, or empty string
            //if($filter){
               //$arr = $this->filterContentArr($arr); // optional
            //}
        }        

        return $arr;
    }

    /**
     * Returns filtered array removing empty/null
     * 
     * @param array $data
     * @return array
     */
    public function filterContentArr($data){               
        foreach($data as $key => $val){
            if(is_array($val)){

                $data[$key] = $this->filterContentArr($val);

                if(empty($data[$key])){
                    unset($data[$key]); //remove empty array
                }

            }else{
                if($val == "" || $val == null){
                    unset($data[$key]);
                }
            }
        }

        return $data;
    }
}

$myObject = new MyObject();
print_r($myObject->getContentArr($myObject));