Skip to content
Advertisement

Is there anyway to get/remove the first object item like array_shift does on array in PHP?

I retrieved data, with mysqli->fetch_object(), in PHP. How can I get the first item and remove it from the objects, like array_shift does to array? How to emulate array_pop on stdClass also?

Something like:

# $object contains 4 items
$first=$object->shift();
$last=$object->pop();
# $object contains 2 items

Preferably no other libraries, nor conversions between object and array needed.

Advertisement

Answer

This will net you the first key from the object property list

https://www.php.net/manual/en/function.get-object-vars.php

$object = new stdClass();
$object->aaa = 'AAA';
$object->bbb = 'BBB';
$object->ccc = 'CCC';

if( empty( $vars = get_object_vars( $object ) ) === false )
{
  $firstKey = current( array_keys( $vars ) );
  $get = $object->$firstKey; // To get
  unset( $object->$firstKey ); // To remove
  var_dump( $get );
}

var_dump( $object );

https://3v4l.org/BmpJ6

string(3) "AAA"
object(stdClass)#1 (2) {
  ["bbb"]=>
  string(3) "BBB"
  ["ccc"]=>
  string(3) "CCC"
}

In the above code, we’re using an array of keys current( array_keys( $vars ) ) you can replace current with end if you want the first or last key, same way you could also use array_shift or array_pop

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement