array.c 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "array.h"
  2. #ifdef ZEND_ENGINE_3
  3. #include <zend_long.h>
  4. #endif
  5. //create zval
  6. //php7 zval在栈 无法返回 故返回nil 调用方处理
  7. zval* php_array_create_zval() {
  8. #ifdef ZEND_ENGINE_3
  9. return NULL;
  10. #else
  11. zval* arr;
  12. ALLOC_INIT_ZVAL(arr);
  13. array_init(arr);
  14. return arr;
  15. #endif
  16. }
  17. //create php7 zval
  18. void php7_array_init(zval* zv) {
  19. array_init(zv);
  20. }
  21. //$arr[int] = int;
  22. void php_array_add_index_long(void* arr, ulong idx, long n) {
  23. #ifdef ZEND_ENGINE_3
  24. add_index_long((zval*)arr, (zend_ulong)idx, (zend_long)n);
  25. #else
  26. add_index_long((zval*)arr, idx, n);
  27. #endif
  28. }
  29. //$arr[int] = 'string';
  30. void php_array_add_index_string(void* arr, ulong idx, char* value) {
  31. #ifdef ZEND_ENGINE_3
  32. add_index_string((zval*)arr, (zend_ulong)idx, value);
  33. #else
  34. add_index_string((zval*)arr, idx, value, 1);
  35. #endif
  36. }
  37. //$arr[int] = 3.14;
  38. void php_array_add_index_double(void* arr, ulong idx, double d) {
  39. #ifdef ZEND_ENGINE_3
  40. add_index_double((zval*)arr, (zend_ulong)idx, d);
  41. #else
  42. add_index_double((zval*)arr, idx, d);
  43. #endif
  44. }
  45. //$arr['string'] = int;
  46. void php_array_add_assoc_long(void* arr, char* key, long n) {
  47. #ifdef ZEND_ENGINE_3
  48. add_assoc_long((zval*)arr, key, (zend_long)n);
  49. #else
  50. add_assoc_long((zval*)arr, key, n);
  51. #endif
  52. }
  53. //$arr['string'] = 'string';
  54. void php_array_add_assoc_string(void* arr, char* key, char* value) {
  55. #ifdef ZEND_ENGINE_3
  56. add_assoc_string((zval*)arr, key, value);
  57. #else
  58. add_assoc_string((zval*)arr, key, value, 1);
  59. #endif
  60. }
  61. //$arr['string'] = 3.14
  62. void php_array_add_assoc_double(void* arr, char* key, double d) {
  63. add_assoc_double((zval*)arr, key, d);
  64. }
  65. //$array[int] = array[]
  66. void php_array_add_index_zval(void* arr, ulong index, void* value) {
  67. #ifdef ZEND_ENGINE_3
  68. add_index_zval((zval*)arr, (zend_ulong)index, (zval*)value);
  69. #else
  70. add_index_zval((zval*)arr, index, (zval*)value);
  71. #endif
  72. }
  73. //$array['string'] = array[]
  74. void php_array_add_assoc_zval(void* arr, char* key, void* value) {
  75. add_assoc_zval((zval*)arr, key, (zval*)value);
  76. }
  77. //$array[] = array[]
  78. void php_array_add_next_index_zval(void* arr, void* zvalue) {
  79. add_next_index_zval((zval*)arr, (zval*)zvalue);
  80. }