php – 将Object的受保护成员的数据复制到数组中的最佳方法
*在确定强调问题后编辑了我的问题.
非常感谢帮助诊断问题的choz * *描述* 我试图在Object中添加一个新的键和值,并将一个关联数组错误地视为一个数组. /****** Class Memebers ********/ //Object with array of associative album arrays. //Each inner album array is defined by unique key ='albumID'. private $member_albums; //array of objects holding associative photo arrays. //Each inner photo array is defined by unique key ='albumID'. private $member_photos; 这是用于添加键和值的方法 – /* * For each photo in each album,we will add a new key and value. * key = 'img_url',value is an array with structure of * ['S']['{url pointing to this photo in storage}'] where 'S' is the * key (representing a string value) and value is the url string. */ private function add_Photo_Url_To_Photos_Data_Array(){ // If data was retrieved from DB without errors // because query fail returns false. if( $this->member_albums && $this->member_photos){ // If user has albums - because 'Count' is always 0 or // greater,representing the number of inner arrays if($this->member_albums['Count'] > 0 ){ // For number of albums foreach ($this->member_albums['Items'] as $albumArr) { // Current album ID $curr_AlbumId = $albumArr['albumID']['S']; // If current album contains photos if( $this->member_photos[$curr_AlbumId]['Count'] > 0){ // For each photo in this album foreach( $this->member_photos[$curr_AlbumId]['Items'] as &$photosArr) { // method that creates a url from photo data- returns string url $url = $this->build_Photo_Url($photosArr,$curr_AlbumId); // Insert new key = 'img_url' and value into the array. // new value is itself an array with key ['S'] // signifying a string and value $url $photosArr['img_url'] = array('S' => $url); // this echo shows key and value were added // correctly into $photosArr echo ' <br>Img URL = ' . $photosArr['img_url']['S']; } } } } } 但是如果我尝试从$this-> member_photos数组项回显’img_url’,它就不存在了. 谢谢. ***编辑3 **** 的var_dump($这 – > member_albums) object(GuzzleServiceResourceModel)#88 (2) { ["structure":protected]=> NULL ["data":protected]=> array(3) { ["Count"]=> int(2) ["Items"]=> array(2) { [0]=> array(7) { ["PlaceLong"]=> array(1) { ["N"]=> string(1) "0" } ["AlbumId"]=> array(1) { ["S"]=> string(7) "album_1" } ["Title"]=> array(1) { ["S"]=> string(5) "Test1" } ["UserId"]=> array(1) { ["S"]=> string(36) "810725E5-D235-43F7-AA50-4CCDACD6AB36" } ["Year"]=> array(1) { ["N"]=> string(1) "0" } ["PlaceLat"]=> array(1) { ["N"]=> string(1) "0" } ["Timestamp"]=> array(1) { ["N"]=> string(16) "472572846.470462" } } 的var_dump($这 – > member_photos) array(2) { ["album_1"]=> object(GuzzleServiceResourceModel)#89 (2) { ["structure":protected]=> NULL ["data":protected]=> array(3) { ["Count"]=> int(5) ["Items"]=> array(5) { [0]=> array(8) { ["ShotId"]=> array(1) { ["S"]=> string(6) "Photo2" } ["AlbumId"]=> array(1) { ["S"]=> string(7) "album_1" } ["UserId"]=> array(1) { ["S"]=> string(16) "1111-22222-22222" } ["Year"]=> array(1) { ["N"]=> string(1) "0" } ["Discovery"]=> array(1) { ["N"]=> string(1) "0" } ["Timpstamp"]=> array(1) { ["N"]=> string(14) "472572840.3845" } ["ExtractedPhotoId"]=> array(1) { ["S"]=> string(32) "Photo2_0-0-746-0-0-1000-746-1000" } ["ManualEdit"]=> array(1) { ["N"]=> string(1) "0" } } 解决方法
Jay,在阅读了所有注释并对您正在使用的模型进行基本搜索之后,您的对象支持toArray()函数,该函数将以没有受保护成员的数组格式返回数据.
这是参考:http://docs.aws.amazon.com/aws-sdk-php/v2/guide/feature-models.html 首先,尝试运行var_dump(get_class_methods($this-> member_albums)));看看它将返回什么样的方法.我确信有一个内置的toArray()函数,主要是因为它是一个响应,所以它们可以让你轻松提取和操作你的数据. 首先尝试var_dump(),然后尝试执行以下$clearArr = $this-> member_albums-> toArray();和print_r / var_dump $clearArr,它应该导致标准的多维数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |