用PHP构建一个带有变体的字节数组?

我正在尝试使用
Variants在PHP中构建一个字节数组.但是,我似乎无法使它工作.这是一个示例代码:

$ie = new COM("InternetExplorer.Application");

$ie->Visible = true;
$ie->Height    = 500 ;
$ie->Width     = 700 ;

$post = array (ord('p'),ord('='),ord('1')) ;
$v = new VARIANT($post, VT_ARRAY|VT_UI1); 

$ie->Navigate2("http://host/web/echo_request.php",0,'',$v) ;

代码产生错误:

Fatal error: Uncaught exception
‘com_exception’ with message ‘Variant
type conversion failed: Type mismatch.type conversion failed: Type mismatch.

我尝试过从http://fi2.php.net/manual/en/com.constants.php开始的变体类型的各种组合

任何帮助是极大的赞赏!

最佳答案 (使用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从它中移出也是如此)

$v = new VARIANT($post);

打印8024. 8024 – 8192 = 12. 12 = VT_VARIANT

或者我在这里遗漏了什么?

如果你想使用VT_UI1,你必须单独创建变体,即

$v = new VARIANT(ord('p'), VT_UI1);

但我假设你想要第一种方式.

这是来自PHP源代码(PHP 5.3.3)(可能有帮助,我可能会离开)

/* Only perform conversion if variant not already of type passed */
if ((ZEND_NUM_ARGS() >= 2) && (vt != V_VT(&obj->v))) {

06003

点赞