Попробуйте извлечь значения массива через "VBScript".Да, вы правильно прочитали ...
<?php
$com = new COM("MSScriptControl.ScriptControl");
$com->Language = 'VBScript';
$com->AllowUI = false;
$com->AddCode('
Function getArrayVal(arr, indexX, indexY)
getArrayVal = arr(indexX, indexY)
End Function
');
$y1 = 0;
$y2 = 1;
for ($x=0; $x < count($mdArray); $x++) {
echo $com->Run('getArrayVal', $mdArray, $x, $y1) . ": ";
echo $com->Run('getArrayVal', $mdArray, $x, $y2) . "\n";
}
?>
Проверено хорошо на массиве, созданном VBScript, что в противном случае дало мне те же проблемы и ошибки, что и вы, когда вы пытались заставить его вести себя как массив PHP,Приведенный выше метод, порожденный нечестивым объединением PHP и VBscript, должен прекрасно извлекать значения по частям.
Чтобы объяснить $y1 = 0; $y2 = 1;
, имейте в виду, что параметры функции VBScript являются byref, поэтому вы не можетепередать что-нибудь, кроме переменной.
Редактировать: Добавлено $com->AllowUI = false
, чтобы отключить любые всплывающие окна на экране.В противном случае запрос будет заблокирован, если из VBScript каким-то образом будет вызван MsgBox()
, и никто не будет на терминале сервера нажимать «ок».