maybe_serialize( string|array|object $data ): mixed

Serializes data, if needed.

Parameters

$datastring|array|objectrequired
Data that might be serialized.

Return

mixed A scalar data.

More Information

  • Data might need to be serialized to allow it to be successfully stored and retrieved from a database in a form that PHP can understand.
  • Confusingly, strings that contain already serialized values are serialized again, resulting in a nested serialization. Other strings are unmodified.
  • A possible solution to prevent nested serialization is to check if a variable is serialized using is_serialized()
if( !is_serialized( $data ) ) { $data = maybe_serialize($data); }

Source

function maybe_serialize( $data ) {	if ( is_array( $data ) || is_object( $data ) ) {	return serialize( $data );	}	/* * Double serialization is required for backward compatibility. * See https://core.trac.wordpress.org/ticket/12930 * Also the world will end. See WP 3.6.1. */	if ( is_serialized( $data, false ) ) {	return serialize( $data );	}	return $data; } 

Changelog

VersionDescription
2.0.5Introduced.

User Contributed Notes

  1. Skip to note 2 content

    Basic Examples

    <?php // Strings are returned untouched. $data = 'Hello World!'; echo maybe_serialize( $data ); // Hello World! // Integers, floats and boolean values are also returned untouched. $data = 55; echo maybe_serialize( $data ); // 55 $data = 4.560 echo maybe_serialize( $data ); // 4.560 $data = true; $data = maybe_serialize( $data ); // $data = true; $data = null; $data = maybe_serialize( $data ); // $data = null // An array or object will be returned as a serialized string. $data = array( 1 => 'Hello World!', 'foo' => 'bar' ); echo maybe_serialize( $data ); // a:2:{i:1;s:12:"Hello World!";s:3:"foo";s:3:"bar";} // A serialized string will be serialized again. $data = 'a:2:{i:1;s:12:"Hello World!";s:3:"foo";s:3:"bar";}'; echo maybe_serialize( $data ); // s:50:"a:2:{i:1;s:12:"Hello World!";s:3:"foo";s:3:"bar";}"; ?>

You must log in before being able to contribute a note or feedback.