@@ -1579,15 +1579,15 @@ PHP_FUNCTION(array_walk_recursive)
15791579 * 0 = return boolean
15801580 * 1 = return key
15811581 */
1582- static zend_always_inline void _php_search_array (zval * return_value , zval * value , zval * array , bool strict , int behavior ) /* {{{ */
1582+ static zend_always_inline void _php_search_array (zval * return_value , zval * value , HashTable * array , bool strict , int behavior ) /* {{{ */
15831583{
15841584 zval * entry ; /* pointer to array entry */
15851585 zend_ulong num_idx ;
15861586 zend_string * str_idx ;
15871587
15881588 if (strict ) {
15891589 if (Z_TYPE_P (value ) == IS_LONG ) {
1590- ZEND_HASH_FOREACH_KEY_VAL (Z_ARRVAL_P ( array ) , num_idx , str_idx , entry ) {
1590+ ZEND_HASH_FOREACH_KEY_VAL (array , num_idx , str_idx , entry ) {
15911591 ZVAL_DEREF (entry );
15921592 if (Z_TYPE_P (entry ) == IS_LONG && Z_LVAL_P (entry ) == Z_LVAL_P (value )) {
15931593 if (behavior == 0 ) {
@@ -1602,7 +1602,7 @@ static zend_always_inline void _php_search_array(zval *return_value, zval *value
16021602 }
16031603 } ZEND_HASH_FOREACH_END ();
16041604 } else {
1605- ZEND_HASH_FOREACH_KEY_VAL (Z_ARRVAL_P ( array ) , num_idx , str_idx , entry ) {
1605+ ZEND_HASH_FOREACH_KEY_VAL (array , num_idx , str_idx , entry ) {
16061606 ZVAL_DEREF (entry );
16071607 if (fast_is_identical_function (value , entry )) {
16081608 if (behavior == 0 ) {
@@ -1619,7 +1619,7 @@ static zend_always_inline void _php_search_array(zval *return_value, zval *value
16191619 }
16201620 } else {
16211621 if (Z_TYPE_P (value ) == IS_LONG ) {
1622- ZEND_HASH_FOREACH_KEY_VAL (Z_ARRVAL_P ( array ) , num_idx , str_idx , entry ) {
1622+ ZEND_HASH_FOREACH_KEY_VAL (array , num_idx , str_idx , entry ) {
16231623 if (fast_equal_check_long (value , entry )) {
16241624 if (behavior == 0 ) {
16251625 RETURN_TRUE ;
@@ -1633,7 +1633,7 @@ static zend_always_inline void _php_search_array(zval *return_value, zval *value
16331633 }
16341634 } ZEND_HASH_FOREACH_END ();
16351635 } else if (Z_TYPE_P (value ) == IS_STRING ) {
1636- ZEND_HASH_FOREACH_KEY_VAL (Z_ARRVAL_P ( array ) , num_idx , str_idx , entry ) {
1636+ ZEND_HASH_FOREACH_KEY_VAL (array , num_idx , str_idx , entry ) {
16371637 if (fast_equal_check_string (value , entry )) {
16381638 if (behavior == 0 ) {
16391639 RETURN_TRUE ;
@@ -1647,7 +1647,7 @@ static zend_always_inline void _php_search_array(zval *return_value, zval *value
16471647 }
16481648 } ZEND_HASH_FOREACH_END ();
16491649 } else {
1650- ZEND_HASH_FOREACH_KEY_VAL (Z_ARRVAL_P ( array ) , num_idx , str_idx , entry ) {
1650+ ZEND_HASH_FOREACH_KEY_VAL (array , num_idx , str_idx , entry ) {
16511651 if (fast_equal_check_function (value , entry )) {
16521652 if (behavior == 0 ) {
16531653 RETURN_TRUE ;
@@ -1673,13 +1673,13 @@ static zend_always_inline void _php_search_array(zval *return_value, zval *value
16731673 */
16741674static inline void php_search_array (INTERNAL_FUNCTION_PARAMETERS , int behavior )
16751675{
1676- zval * value , /* value to check for */
1677- * array ; /* array to check in */
1676+ zval * value ; /* value to check for */
1677+ HashTable * array ; /* array to check in */
16781678 bool strict = 0 ; /* strict comparison or not */
16791679
16801680 ZEND_PARSE_PARAMETERS_START (2 , 3 )
16811681 Z_PARAM_ZVAL (value )
1682- Z_PARAM_ARRAY (array )
1682+ Z_PARAM_ARRAY_HT (array )
16831683 Z_PARAM_OPTIONAL
16841684 Z_PARAM_BOOL (strict )
16851685 ZEND_PARSE_PARAMETERS_END ();
@@ -1696,19 +1696,22 @@ PHP_FUNCTION(in_array)
16961696
16971697ZEND_FRAMELESS_FUNCTION (in_array , 2 )
16981698{
1699- zval * value , * array ;
1699+ zval * value ;
1700+ HashTable * array = NULL ;
17001701
17011702 Z_FLF_PARAM_ZVAL (1 , value );
17021703 Z_FLF_PARAM_ARRAY (2 , array );
17031704
17041705 _php_search_array (return_value , value , array , false, 0 );
17051706
17061707flf_clean :;
1708+ Z_FLF_PARAM_FREE_ARRAY (array );
17071709}
17081710
17091711ZEND_FRAMELESS_FUNCTION (in_array , 3 )
17101712{
1711- zval * value , * array ;
1713+ zval * value ;
1714+ HashTable * array = NULL ;
17121715 bool strict ;
17131716
17141717 Z_FLF_PARAM_ZVAL (1 , value );
@@ -1718,6 +1721,7 @@ ZEND_FRAMELESS_FUNCTION(in_array, 3)
17181721 _php_search_array (return_value , value , array , strict , 0 );
17191722
17201723flf_clean :;
1724+ Z_FLF_PARAM_FREE_ARRAY (array );
17211725}
17221726
17231727/* {{{ Searches the array for a given value and returns the corresponding key if successful */
0 commit comments