Я вызываю метод COM-объекта, который возвращает объект варианта массива типа 8209 в моем PHP-коде.
$com_VArray = $com_Object->objectMethod; //Is a 8209 variant object
Я хочу, в конце концов, передать преобразованный объект VT_VARIANT как значение для другого метода COM-объекта, для которого его вход будет VT_VARIANT [12].
Я конвертирую $ com_VArray в тип варианта объекта VT_VARIANT, выдавая следующие
$obj_VT_VARIANT = variant_cast($com_VArray, VT_VARIANT);
Но тогда я получаю следующую ошибку
Неустранимая ошибка: исключить исключение «com_exception» с сообщением «Ошибка преобразования типа варианта: введите несоответствие». в C: \ xampp \ htdocs \ waterCompany \ reservoir.php: 110 Трассировка стека # 0 C: \ xampp \ htdocs \ waterCompany \ reservoir.php (110): variant_cast (объект (вариант), 12) # 1 {main} throw в C: \ xampp \ htdocs \ waterCompany \ reservoir.php в строке 110.
Я прочитал еще несколько вариантов на variant_cast здесь http://php.net/manual/en/function.variant-set-type.php, но я не сделал значительно больших успехов.
Я использую PHP 5.5.11.
8209 – это 0x2011, который сигнализирует массив элементов VT_UI1.
Когда вы хотите преобразовать его, вам нужно создать массив вариантов и скопировать в него каждый элемент старого типа. При копировании содержимого вы можете отнести каждый элемент VT_UI1 в тип VT_VARIANT.
Это не так и не разрешено создавать массивы. Просто попробуйте изучить основы ВАРИАНТОВ