Re: cvs: php4 /ext/standard array.c basic_functions.c php_array.h
| From: | Andi Gutmans | Date: | Mon, 30 Apr 2001 04:29:05 +0000 |
| Subject: | Re: cvs: php4 /ext/standard array.c basic_functions.c php_array.h | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-5372@lists.php.net to get a copy of this message | ||
Yeah but there is a reason for this. In some situations (as far as I remember but I can verify it) the Engine can only unset() a variable by assigning NULL. In such a situation you would want key_exists() to return false.
Andi
At 12:19 AM 4/30/2001 -0400, David Croft wrote:
$a = array('hello' => null);isset($a['hello']); // falsekey_exists('hello', $a); // true -- |> /+\ \| | |> David Croft Infotrek On Mon, 30 Apr 2001, Andi Gutmans wrote: Why not use isset()? How is this different? (I know one reason why it's different but I'm curious what difference you see). Andi At 04:06 AM 4/30/2001 +0000, David Croft wrote:+----------------------------------------------------------------------+david Sun Apr 29 21:06:10 2001 EDTModified files:/php4/ext/standard array.c basic_functions.c php_array.hLog: @ - Added key_exists() to check if a given key or index exists in an @ array or object (David Croft) Added key_exists() to check if a given key or index exists in an array or object Index: php4/ext/standard/array.c diff -u php4/ext/standard/array.c:1.107 php4/ext/standard/array.c:1.108--- php4/ext/standard/array.c:1.107 Mon Apr 2 06:20:16 2001+++ php4/ext/standard/array.c Sun Apr 29 21:06:09 2001 @@ -21,7 +21,7 @@*/ -/* $Id: array.c,v 1.107 2001/04/02 13:20:16 andrei Exp $ */ +/* $Id: array.c,v 1.108 2001/04/30 04:06:09 david Exp $ */ #include "php.h" #include "php_ini.h" @@ -3074,6 +3074,44 @@ } /* }}} */ + +/* {{{ proto bool key_exists(mixed key, array search) + Checks if the given key or index exists in the array */ +PHP_FUNCTION(key_exists) +{check for */+ zval **key, /* key to+ **array; /* array to check in */ +IS_OBJECT) {+ if (ZEND_NUM_ARGS() != 2 || + zend_get_parameters_ex(ZEND_NUM_ARGS(), &key, &array) ==FAILURE) {+ WRONG_PARAM_COUNT; + }++ if (Z_TYPE_PP(array) != IS_ARRAY && Z_TYPE_PP(array) !=+ php_error(E_WARNING, "Wrong datatype for second argument in call to %s", get_active_function_name());+----------------------------------------------------------------------++ RETURN_FALSE; + }++ switch (Z_TYPE_PP(key)) { + case IS_STRING: + if (zend_hash_exists(HASH_OF(*array),Z_STRVAL_PP(key), Z_STRLEN_PP(key)+1)) {+ RETURN_TRUE; + } + RETURN_FALSE;++ case IS_LONG: + if (zend_hash_index_exists(HASH_OF(*array),Z_LVAL_PP(key))) {+ RETURN_TRUE; + } + RETURN_FALSE;++ default: + php_error(E_WARNING, "Wrong datatype for firstargument in call to %s", get_active_function_name());+ RETURN_FALSE; + }+ +} +/* }}} */ /* * Local variables: Index: php4/ext/standard/basic_functions.c diff -u php4/ext/standard/basic_functions.c:1.325 php4/ext/standard/basic_functions.c:1.326 --- php4/ext/standard/basic_functions.c:1.325 Tue Apr 17 10:08:03 2001 +++ php4/ext/standard/basic_functions.c Sun Apr 29 21:06:09 2001 @@ -17,7 +17,7 @@*/ -/* $Id: basic_functions.c,v 1.325 2001/04/17 17:08:03 wez Exp $ */ +/* $Id: basic_functions.c,v 1.326 2001/04/30 04:06:09 david Exp $ */ #include "php.h" #include "php_main.h" @@ -588,6 +588,7 @@php4/ext/standard/php_array.h:1.25PHP_FE(array_sum, NULL) PHP_FE(array_filter,NULL)PHP_FE(array_map, NULL) + PHP_FE(key_exists, NULL)/* aliases from array.c */ PHP_FALIAS(pos, current, first_arg_force_ref)Index: php4/ext/standard/php_array.h diff -u php4/ext/standard/php_array.h:1.24--- php4/ext/standard/php_array.h:1.24 Mon Mar 19 13:20:02 2001+----------------------------------------------------------------------++++ php4/ext/standard/php_array.h Sun Apr 29 21:06:09 2001@@ -19,7 +19,7 @@*/ -/* $Id: php_array.h,v 1.24 2001/03/19 21:20:02 andrei Exp $ */ +/* $Id: php_array.h,v 1.25 2001/04/30 04:06:09 david Exp $ */ #ifndef PHP_ARRAY_H #define PHP_ARRAY_H @@ -77,6 +77,7 @@ PHP_FUNCTION(array_sum); PHP_FUNCTION(array_filter); PHP_FUNCTION(array_map); +PHP_FUNCTION(key_exists); HashTable* php_splice(HashTable *, int, int, zval ***, int,HashTable **);PHPAPI void php_array_merge(HashTable *dest, HashTable *src, intrecursive);-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net For additional commands, e-mail: php-cvs-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net For additional commands, e-mail: php-cvs-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net