/* * 版权归PHPSalon.com所有,未经许可,严禁任何形式转载 * * Author: Wenlong Wu */ 前段时间一网友问我在写PHP扩展的时候如何遍历数组呢,现将代码贴出来,并做相应的解释。 PHP_FUNCTION(print_array) { zval *z_array; // 外部传入的数组 int count, i; zval **z_item; if (FAILURE == zend_parse_parameters(argc TSRMLS_CC, "a", &z_array)) { return; } // 获取数组大小 count = zend_hash_num_elements(Z_ARRVAL_P(z_array)); // 将数组的内部指针指向第一个单元 zend_hash_internal_pointer_reset(Z_ARRVAL_P(z_array)); for (i = 0; i < count; i ++) { char* key; int idx; // 获取当前数据 zend_hash_get_current_data(Z_ARRVAL_P(z_array), (void**) &z_item); convert_to_string_ex(z_item); if (zend_hash_get_current_key(Z_ARRVAL_P(z_array), &key, &idx, 0) == HASH_KEY_IS_STRING) { // KEY为字符串 php_printf("array[%s] = %s", key, Z_STRVAL_PP(z_item)); } else { // KEY为数字 php_printf("array[%d] = %s", idx, Z_STRVAL_PP(z_item)); } // 将数组中的内部指针向前移动一位 zend_hash_move_forward(Z_ARRVAL_P(z_array)); } } 在PHP调用如下: $arr = array( 'id' => 'ezdevelop', 1 => "test number", 2 => "test number 2", 'name' => 'Wenlong Wu' ); print_array($arr); ?>
类别:技术文章 | 阅读:252835 | 评论:0 |
标签:php zend