php remove object from array of objects

30,028

Solution 1

    array_splice($objectarray, $index, 1); 
    //array_splice accepts 3 parameters (array, start, length) and removes the given 
    //array and then normalizes the index
    //OR 
    unset($objectarray[$index]); //removes the array at given index
    $reindex = array_values($objectarray); //normalize index
    $objectarray = $reindex; //update variable

Solution 2

You have to use the function unset on your array.

So its like that:

<?php

$index = 2;

$objectarray = array(
    0 => array('label' => 'foo', 'value' => 'n23'),
    1 => array('label' => 'bar', 'value' => '2n13'),
    2 => array('label' => 'foobar', 'value' => 'n2314'),
    3 => array('label' => 'barfoo', 'value' => '03n23')
);
var_dump($objectarray);
foreach ($objectarray as $key => $object) {
    if ($key == $index) {
        unset($objectarray[$index]);
    }
}

var_dump($objectarray);
?>

Remember, your array will have odd indexes after that and you must (if you want) reindex it.

$foo2 = array_values($objectarray);

Solution 3

in that case you won't need that foreach just unset directly

unset($objectarray[$index]);
Share:
30,028
toddsby
Author by

toddsby

Powered by cookies and ice cream

Updated on July 09, 2022

Comments

  • toddsby
    toddsby almost 2 years

    I'm trying to remove an object from an array of objects by its' index. Here's what I've got so far, but i'm stumped.

    $index = 2;
    
    $objectarray = array(
    0=>array('label'=>'foo', 'value'=>'n23'),
    1=>array('label'=>'bar', 'value'=>'2n13'),
    2=>array('label'=>'foobar', 'value'=>'n2314'),
    3=>array('label'=>'barfoo', 'value'=>'03n23')
    );
    
    //I've tried the following but it removes the entire array.
    foreach ($objectarray as $key => $object) {
     if ($key == $index) {
       array_splice($object, $key, 1);
       //unset($object[$key]); also removes entire array.
     }
    }
    

    Any help would be appreciated.

    Updated Solution

     array_splice($objectarray, $index, 1); //array_splice accepts 3 parameters 
        //(array, start, length) removes the given array and then normalizes the index
        //OR 
        unset($objectarray[$index]); //removes the array at given index
        $reindex = array_values($objectarray); //normalize index
        $objectarray = $reindex; //update variable