Vishal Tiwari - 2009-04-30

Hi,

I have doubt in how to access an array which is returned as result from PHP extension using Delphi.

Basic idea is that to take User ID and Password as an input from PHP and send as an array parameter to PHP extension function and from there i want to return the same i.e. User ID and Password as an array result.

I am new for PHP so it's learning curve for me.

Following is my code.

Code is very simple.

Thanks in advance.

****************************************************************

function user_submit()
{
  $data[0] = $_POST['user_id'];
        $data[1] = $_POST['user_pwd'];

  $a = simpleinsert($data);

  echo $a[0];

  //or

  echo $a[0];
}

****************************************************************

procedure TPHPExtension1.PHPExtension1Functions1Execute(Sender: TObject;
  Parameters: TFunctionParams; var ReturnValue: Variant;
  ZendVar: TZendVariable; TSRMLS_DC: Pointer);
var
  variable : pzval;
  ar : array of string;
  cnt : integer;
  tmp : ^ppzval;
begin

  //This function reads array parameter

  variable := Parameters.Items[0].ZendValue;

  if variable^._type = IS_ARRAY then
  begin
    SetLength(ar, zend_hash_num_elements(variable^.value.ht));
    for cnt := 0 to zend_hash_num_elements(variable^.value.ht)-       1 do
    begin
      new(tmp);
      zend_hash_index_find(variable^.value.ht, cnt, tmp);
      ar[cnt] := tmp^^^.value.str.val;
      freemem(tmp);
    end;
 
    ReturnValue := ar;
  end;
****************************************************************