Я не уверен, так как я не пользователь Oracle, но я предполагаю, что различие заключается при использовании многобайтовых наборов символов, таких как Unicode (UTF-16/32). В этом случае 11 байтов могли составлять меньше чем 11 символов.
Также те типы поля можно было бы рассматривать по-другому в отношении символов с диакритикой, или случай, например, 'binaryField (ete) = "Г©tГ©"' не будет соответствовать, в то время как 'charField (ete) = "Г©tГ©"' мог бы (снова не уверенный в Oracle).
Да, они просто заблокированы, если их не вернуть в массив. В PHP есть несколько небольших ошибок, например, в более старых версиях вы могли определить константу как массив, но никогда не обращаться к ее элементам. Даже сейчас вы можете определить константу как ресурс (например, define ('MYSQL', mysql_connect ());
), хотя это приводит к довольно непредсказуемому поведению, и, опять же, этого следует избегать.
Как правило, , по возможности лучше избегать преобразования массива в объект. Если вам действительно нужно это сделать, рассмотрите возможность создания нового экземпляра stdClass
, а затем вручную переименуйте все переменные, например, в _0
, _1
и т. Д.
$a = array('cat','dog','pheasant');
$o = new stdClass;
foreach ($a as $k => $v) {
if (is_numeric($k)) {
$k = "_{$k}";
}
$o->$k = $v;
}
РЕДАКТИРОВАТЬ: Только что провел еще одну быструю проверку этой гипотезы, и да, они официально «не существуют» в контексте объекта; данные хранятся, но к ним невозможно получить доступ, и поэтому они являются конечным частным членом. Вот тест:
$a = array('one','two','three');
$o = (object)$a;
var_dump(property_exists($o, 1), property_exists($o, '1'));
И результат:
bool(false)
bool(false)
РЕДАКТИРОВАТЬ СНОВА: Интересное примечание, следующая операция возвращается неверно:
$a = array('one','two','three','banana' => 'lime');
$b = array('one','two','banana' => 'lime');
$y = (object)$a;
$z = (object)$b;
var_dump($y == $z);
Я думаю, вы получаете ошибку, потому что приведение целочисленного ключа массива к объекту / подобъекту нарушит соглашение об именах переменных PHP.
Советы:
OBJECT
или ARRAY