Ответ 1
(с PHP 5.3.2)
Разве это не будет просто VT_ARRAY? (или пустой тип)
$post = array (ord('p'),ord('='),ord('1'));
$v = new VARIANT($post, VT_ARRAY);
print variant_get_type($v);
(ПРИМЕЧАНИЕ: это оставляет VT_ARRAY из него i.e)
$v = new VARIANT($post);
Распечатывается 8024. 8024 - 8192 = 12. 12 = VT_VARIANT
Или я что-то пропустил?
Если вы хотите использовать VT_UI1, вам придется создавать варианты отдельно i.e
$v = new VARIANT(ord('p'), VT_UI1);
Но я предполагаю, что вам нужен первый способ.
Это из исходного кода PHP (PHP 5.3.3) (может помочь, я мог бы отключиться)
/* Выполнять только преобразование, если вариант не был уже пройденного типа */ if ((ZEND_NUM_ARGS() >= 2) && (vt!= V_VT (& obj- > v))) {
/* If already an array and VT_ARRAY is passed then: - if only VT_ARRAY passed then do not perform a conversion - if VT_ARRAY plus other type passed then perform conversion but will probably fail (origional behavior) */