PHP Snippet 1:
function data_stringify($data) {
switch (gettype($data)) {
case 'string' : return '\''.addcslashes($data, "'\\").'\'';
case 'boolean': return $data ? 'true' : 'false';
case 'NULL' : return 'null';
case 'object' :
case 'array' :
$expressions = [];
foreach ($data as $c_key => $c_value) {
$expressions[] = data_stringify($c_key).' => '.
data_stringify($c_value);
}
return gettype($data) === 'object' ?
'(object)['.implode(', ', $expressions).']' :
'['.implode(', ', $expressions).']';
default: return (string)$data;
}
}
PHP Snippet 2:
var_dump( data_stringify(-1 ) === '-1' );
var_dump( data_stringify(-1.1 ) === '-1.1' );
var_dump( data_stringify(123e1 ) === '1230' ); # exponential notation
var_dump( data_stringify(0x123 ) === '291' ); # hexadecimal notation
var_dump( data_stringify(01234 ) === '668' ); # octal notation
var_dump( data_stringify(0b101 ) === '5' ); # binary notation
var_dump( data_stringify('?123') === "'?123'" );
var_dump( data_stringify('123?') === "'123?'" );
var_dump( data_stringify(true ) === 'true' );
var_dump( data_stringify(false ) === 'false' );
var_dump( data_stringify(null ) === 'null' );
PHP Snippet 3:
var_dump(
data_stringify([
100,
'200',
'item3' => 300,
'item4' => '400',
'item5' => 'value500'
]) === "[".
"0 => 100, ".
"1 => '200', ".
"'item3' => 300, ".
"'item4' => '400', ".
"'item5' => 'value500']"
);
PHP Snippet 4:
var_dump(
data_stringify((object)[
'prop1' => 100,
'prop2' => '200',
'prop3' => 'value300'
]) === "(object)[".
"'prop1' => 100, ".
"'prop2' => '200', ".
"'prop3' => 'value300']"
);
PHP Snippet 5:
var_dump(
data_stringify([
100,
'200',
'item3' => (object)['prop1' => 1, 'prop2' => '2', 'prop3' => 'value3'],
'item4' => '400',
'item5' => 'value500'
]) === "[".
"0 => 100, ".
"1 => '200', ".
"'item3' => (object)['prop1' => 1, 'prop2' => '2', 'prop3' => 'value3'], ".
"'item4' => '400', ".
"'item5' => 'value500']"
);
PHP Snippet 6:
var_dump(
data_stringify((object)[
'prop1' => 1,
'prop2' => '2',
'prop3' => [100, '200', 'item3' => '300', 'item4' => 'value400'],
'prop4' => 'value4'
]) === "(object)[".
"'prop1' => 1, ".
"'prop2' => '2', ".
"'prop3' => [0 => 100, 1 => '200', 'item3' => '300', 'item4' => 'value400'], ".
"'prop4' => 'value4']"
);