我有一个名为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...
....
}
如何将图片转换为数组并将其传递给我的服务?谁能请你帮帮我
答案 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));