php打印 二维数组,php扩展获取数组参数(包括二维数组)

版本是php 5.2

1.一维数组:

//获取数据

zval **data;

HashTable *arr_hash;

HashPosition pointer;

int array_count;

arr_hash = Z_ARRVAL_P(uinlist);

for(

zend_hash_internal_pointer_reset_ex(arr_hash, &pointer);

zend_hash_get_current_data_ex(arr_hash, (void**) &data, &pointer) == SUCCESS;

zend_hash_move_forward_ex(arr_hash, &pointer)

)

{

zval temp;

char *key;

uint key_len;

ulong index;

//加入到protobuf中去

if (zend_hash_get_current_key_ex(arr_hash, &key, &key_len, &index, 0, &pointer) == HASH_KEY_IS_STRING)

{

//不处理

}

else

{

temp = **data;

zval_copy_ctor(&temp);

convert_to_string(&temp);

//Z_STRVAL(temp)

}

}

2.二维数组:

//获取输入的二维数组,包括tid 和 tidval     zval **data;     HashTable *arr_hash;     HashPosition pointer;     int array_count;     arr_hash = Z_ARRVAL_P(arr);  //arr 是输入的二维数组     for(                 zend_hash_internal_pointer_reset_ex(arr_hash, &pointer);                  zend_hash_get_current_data_ex(arr_hash, (void**) &data, &pointer) == SUCCESS;                  zend_hash_move_forward_ex(arr_hash, &pointer)         )         {                 if(Z_TYPE_PP(data) == IS_ARRAY)                 {                         //处理二级数组                         HashTable *arr_hash2;                         HashPosition pointer2;                         int array_count2;                         arr_hash2 = Z_ARRVAL_P(*data);                         array_count2 = zend_hash_num_elements(arr_hash2);                         if(array_count2 < 2)                         {                                 //不处理只有tid,没有tidval的item                                 continue;                         }                         zval **data2;                         for(                                 zend_hash_internal_pointer_reset_ex(arr_hash2, &pointer2);                                  zend_hash_get_current_data_ex(arr_hash2, (void**) &data2, &pointer2) == SUCCESS;                                  zend_hash_move_forward_ex(arr_hash2, &pointer2)                         )                         {                                 zval temp;                                 char *key;                                 uint key_len;                                 ulong index;                                 SetUserInfoReq::TlvStruct * tmpTidVal = req.mutable_set_user_info_req()->add_tlvinfo();                                 //加入到protobuf中去                                 if (zend_hash_get_current_key_ex(arr_hash2, &key, &key_len, &index, 0, &pointer2) == HASH_KEY_IS_STRING)                                  {                                         temp = **data2;                                         zval_copy_ctor(&temp);                                         convert_to_string(&temp);                                        //获取数组的值   Z_STRVAL(temp)                                         PHPWRITE(Z_STRVAL(temp),strlen(Z_STRVAL(temp)));                                 }                                 else                                 {                                         temp = **data2;                                         zval_copy_ctor(&temp);                                         convert_to_string(&temp);                                         PHPWRITE(Z_STRVAL(temp),strlen(Z_STRVAL(temp)));                                 }                                 PHPWRITE(key, key_len);                                 zval_dtor(&temp);                         }                 }     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值