kh.tab
kh.tab

Reputation: 1304

PHP delete object inside array

I have to delete some objects inside my action before sending data to the view

The data are something like this:

'items' => [
        (int) 0 => object(App\Model\Entity\Propriete) {

        'id_propriete' => (int) 1,
         // and other fields
        'user' => object(App\Model\Entity\User) {

            'id' => '1459436853',
        //and other fields
        },
        'favorites' => [
            (int) 0 => object(App\Model\Entity\Favorite) {

                'id' => (int) 24,
                'propriete_id' => (int) 1,
                'user_id' => '1459438630',
                'created' => object(Cake\I18n\FrozenDate) {

                    'time' => '2016-04-15T00:00:00+00:00',
                    'timezone' => 'UTC',
                    'fixedNowTime' => false

                },
                'modified' => object(Cake\I18n\FrozenDate) {

                    'time' => '2016-04-15T00:00:00+00:00',
                    'timezone' => 'UTC',
                    'fixedNowTime' => false

                },

            },
            (int) 1 => object(App\Model\Entity\Favorite) {

                'id' => (int) 27,
                'propriete_id' => (int) 1,
                'user_id' => '1459436853',
            ,
                'modified' => object(Cake\I18n\FrozenDate) {

                    'time' => '2016-04-18T00:00:00+00:00',
                    'timezone' => 'UTC',
                    'fixedNowTime' => false

                },
                '[new]' => false,
                '[accessible]' => [
                    '*' => true
                ],
                '[dirty]' => [],
                '[original]' => [],
                '[virtual]' => [],
                '[errors]' => [],
                '[invalid]' => [],
                '[repository]' => 'Favorites'

            },
            (int) 2 => object(App\Model\Entity\Favorite) {

                'id' => (int) 28,
                'propriete_id' => (int) 1,
                'user_id' => 'ae0dce23-584b-4907-b32e-1655d5e69e55',


            }
        ],
    }
]

favorites is an array i want to remove some specific object inside this array according to a condition.. So that what i tried to do :

   foreach($proprietes as $ad){
      foreach($ad->favorites as $favori)
          if($favori->user_id !==$user['id']){
              unset($favori);
          }
   }

Butit doesn't work can some one help ?

Upvotes: 0

Views: 52

Answers (1)

I wrestled a bear once.
I wrestled a bear once.

Reputation: 23379

   foreach($proprietes as $ad){
      foreach($ad->favorites as $key=>$favori)
          if($favori->user_id !==$user['id']){
              unset($ad->favorites[$key]);
          }
   }

You have to reference the object directly.

Upvotes: 1

Related Questions