【发布时间】:2014-07-03 14:34:42
【问题描述】:
我开始编写 PHP 扩展,并希望了解如何循环遍历传递的数组(目的是按值更改数据值)。首选方法是 for 循环,以便我可以将 array1 与 array2 数据匹配,例如array1[0] 链接到 array2[0], [1] 和 [1] 等等...
有人可以帮忙吗?
modarray.c
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
extern zend_module_entry modarray_module_entry;
#define phpext_modarray_ptr &modarray_module_entry
PHP_FUNCTION(modarray);
static function_entry modarray_functions[] = {
PHP_FE(modarray, NULL)
PHP_FE_END
};
zend_module_entry modarray_module_entry = {
STANDARD_MODULE_HEADER,
"modarray",
modarray_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
"0.1",
STANDARD_MODULE_PROPERTIES
};
ZEND_GET_MODULE(modarray)
PHP_FUNCTION(modarray)
{
zval *val, *val2;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|z", &val, &val2) == FAILURE){
return;
}
SEPARATE_ZVAL(&val);
SEPARATE_ZVAL(&val2);
array_init(return_value);
zval_add_ref(&val);
zval_add_ref(&val2);
add_next_index_zval(return_value, val);
add_next_index_zval(return_value, val2);
}
PHP 代码
<?php
$array1 = array(1,2,3,4);
$array2 = array(5,6,7,8);
echo '<pre>';
print_r(modarray($array1,$array2));
echo '</pre>';
?>
PHP 输出
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
[1] => Array
(
[0] => 5
[1] => 6
[2] => 7
[3] => 8
)
)
【问题讨论】:
标签: php c php-extension