只是我今天注意到一个奇怪的行为在一个对象模型,该模型是以前的工作就好了(我已经检查的一切可能的和什么有关其结构已经改变了,所以我怀疑改变PHP版本,并想知道如果任何人有体验任何类似的东西)

直到最近,我可以设置键的对象的性别阵列。具体implememation这在我的一个模型是包含在一个画廊类,这样的:

public function __construct($gid){
        parent::__construct($gid);
        $this->Photos = $this->getPhotos();
        $this->AlbumCover = $this->getCover();
    }

    public function getPhotos(){
        $sql = 'SELECT GalleryPhotoID FROM GalleryPhoto WHERE GalleryID = ?';
        $params = array($this->GalleryID);
        $allids = DatabaseHandler::GetAll($sql, $params);
        $output = array();
        foreach($allids as $id){
            $gp = new GalleryPhoto($id['GalleryPhotoID']);
            $output[$gp->GalleryPhotoID] = $gp;
        }
        return $output;
    }

相关的部分省略了。

基本上,我可以设置阵键的画廊的照片的对象的个人照片的身份证数据库中。这只是使它更容易代码个迭代和作出整件事情的运行顺畅。

现在,无论我怎么集的关键,自动整数时产生的foreach运行。我甚至试着打字一个字符串中,理论上应该取代每次迭代,但我仍然有增加,自动整数键的财产的照片。

[Photos] => Array
        (
            [0] => GalleryPhoto Object
                (
                    [GalleryID] => 9
                    [Caption] => 
                    [Orientation] => 0
                    [AlbumCover] => 
                    [DateAdded] => 2011-01-03 16:58:51
                    [GalleryPhotoID] => 63
                    [Thumbnail] => 
                    [Image] => 
                    [src] => http://..com/galleryImage/getImage/63
                )

            [1] => GalleryPhoto Object
                (
                    [GalleryID] => 9
                    [Caption] => 
                    [Orientation] => 0
                    [AlbumCover] => 
                    [DateAdded] => 2011-01-03 16:58:51
                    [GalleryPhotoID] => 64
                    [Thumbnail] => 
                    [Image] => 
                    [src] => http://..com/galleryImage/getImage/64
                )

        )

具有专项能手动设置键内的一个目的财产,这是一系列被删除,在一些次要释放我不知道的吗?我已经google搜索一切都过去了,看过的PHP手册网站,并发现没有答案。有任何人经历了任何类似的东西?是否有更好的方法我考虑?我只是真的很了这一点,因为它使得更容易实施一下之前的系统通过的ajax请求回来下一个合乎逻辑的id(铭记id可以删除的之间的!)

谢谢!

有帮助吗?

解决方案

我没有看到任何东西错了什么,你有,我从来没有经验丰富的行为描述。然而,一个快速的解决方案可能是代替分配符合这样的事情:

$output[$id['GalleryPhotoID']] = $gp;

你也可以 echo $gp->GalleryPhotoID; 要确保 GalleryPhotoID 酒店实际上可以访问的方式。

最后,你说你替换上述行与一个类似于:

$output['foobar'] = $gp;

它还创建了一个新的条目,与整键,对于每一个入口?如果是这种情况,那么我认为可能有些东西在你的代码省略这是造成问题。

其他提示

一路脸部。新年的流出物必须仍然在我的大脑中,否则我会注意到,如果没有专辑Copover Proterty的照片,我添加的功能以获取专辑封面缩略图将阵列改组!

private function getCover(){
        foreach($this->Photos as $ind=>$p){
            if($p->AlbumCover){
                return $this->Photos[$ind];
            }
        }

        shuffle($this->Photos); //this is the problem
        return current($this->Photos);

    }

我对此进行了修改,只是制作变量和随机混音的本地副本,如果没有设置封面。

private function getCover(){
        foreach($this->Photos as $ind=>$p){
            if($p->AlbumCover){
                return $this->Photos[$ind];
            }
        }
        $Photos = $this->Photos;
        shuffle($Photos);
        return current($Photos);

    }

由于您的警告使我陷入了错误,我接受并张贴了答案和评论。多谢你们!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top