<?php
/**
* sort() triggers type-conversion notice
* @link https://bugs.php.net/bug.php?id=64580
*/
function obj($prop) {
// return array($prop);
global $objects;
isset($objects) || $objects = 0;
$objects++;
return (object) array('prop' => $prop);
}
function tostring($val) {
if (is_object($val)) {
$val = sprintf('obj(%s)', $val->prop);
}
if (is_array($val)) {
$val = '[' . implode(',', $val) . ']';
}
return $val;
}
function handler() {
global $errors;
isset($errors) || $errors = 0;
$errors++;
return FALSE;
}
$subject = array(3, 3, 2, 3, 3, 2, 2, 3, 3, 1, 1, obj(1), 1, obj(1.2), 2, obj(2), 2, 2, 2, 2, obj(2.1), 1, 0, 0);
set_error_handler('handler');
sort($subject);
set_error_handler(FALSE);
printf("sort caused %d error(s) in an array of %d member(s) of which %d are object(s).\n", $errors, count($subject), $objects);
echo 'sort()-result: ', implode(', ', array_map('tostring', $subject));
preferences:
33.09 ms | 402 KiB | 5 Q