Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中使用zend函数时,如何传递字符串、int、char并打印它们?_Php_Visual C++_Php Extension - Fatal编程技术网

在php中使用zend函数时,如何传递字符串、int、char并打印它们?

在php中使用zend函数时,如何传递字符串、int、char并打印它们?,php,visual-c++,php-extension,Php,Visual C++,Php Extension,我正在尝试创建php扩展名,其中我将字符串、int、char传递给我的.cpp文件。.cpp文件中的我的zend函数如下所示: #define PHP_COMPILER_ID "VC9" #include "php.h" ZEND_FUNCTION(use_html); zend_function_entry use_functions[] = { ZEND_FE(use_html, NULL) {NULL, NULL, NULL} }; zend_module_e

我正在尝试创建php扩展名,其中我将字符串、int、char传递给我的.cpp文件。.cpp文件中的我的zend函数如下所示:

#define PHP_COMPILER_ID  "VC9"

#include "php.h"


ZEND_FUNCTION(use_html);

zend_function_entry use_functions[] = 
{
    ZEND_FE(use_html, NULL)
    {NULL, NULL, NULL}
};

zend_module_entry use_html_module_entry = 
{
    STANDARD_MODULE_HEADER,
    "Use Html",
    use_functions,
    NULL, NULL, NULL, NULL, NULL,
    "1.0.0-tutorial",
    STANDARD_MODULE_PROPERTIES
};

ZEND_GET_MODULE(use_html);

ZEND_FUNCTION(use_html)
{
     int useHtml;
     char *ch;
     int a=10,b=120,c;
     if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "/", &useHtml) == FAILURE)
     {
         E_ERROR;
         return;
     }
     c=a+b;
     php_printf("sum is",&useHtml);
     php_printf("This string  is %d :" +  useHtml );
     if(useHtml==1)
     {
         php_printf("\n This string uses <a href='#'>Html</a>");
     }
     else
     {
         php_printf("This string does not Html");
     }

     return;
}
( ! ) SCREAM: Error suppression ignored for
( ! ) Warning: use_html() expects parameter 1 to be unknown, integer given in D:\wamp\www\test.php on line 3
Call Stack
#   Time    Memory  Function    Location
1   0.0006  138008  {main}( )   ..\test.php:0
2   0.0006  138352  use_html ( )    ..\test.php:3
关于这一部分:

if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "/", &useHtml) == FAILURE)
必须指定“/”所在的预期参数类型。
要接受每种类型,可以使用“z”。但请看一下,要访问char*、long和double值,您必须使用宏或将值转换为字符串,以便进行此类签出。

我尝试使用“s”表示字符串,“l”表示长时间,但即使这样也会产生同样的问题!如何加载模块?即使是错误信息还是一样?谢谢回复。我正在从test.php文件加载模块。我已经创建了.dll并与之链接!当我取Long int并通过时,使用_html(1);int valeus,那么它工作得很好,但是当我打印它时,它会给出一些垃圾值。我尝试使用php_printf打印(“这个字符串是%d:+useHtml);,php_printf(“此字符串为%ld:+useHtml”);但却给了同样的垃圾价值!假设我已经很久了;char*s;内苏伦;zval*param;如果(zend_parse_parameters(zend_NUM_ARGS()TSRMLS_CC,“lsz”,&l,&s,&s_len,¶m)=FAILURE){return;}然后我想打印每个元素,我该怎么做?'php_printf(“这个字符串是%d:+useHtml);”?你是说“php_printf”(“这个字符串是%d:,useHtml);”,正确的?您可以查看php_var_dump()源代码,了解如何通过zval指针处理类型:
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "/", &useHtml) == FAILURE)