Re: cvs: php4 /ext/standard array.c basic_functions.c php_array.h

From: 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']);      // false
key_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 EDT
Modified files:
    /php4/ext/standard  array.c basic_functions.c php_array.h
Log: @ - 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) +{
+       zval **key,                                     /* key to 
check for */
+ **array; /* array to check in */ +
+       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) != 
IS_OBJECT) {
+ 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 first
argument 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 @@
        PHP_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.25
--- 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, int
recursive);
-- 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


« previous php.cvs (#5372) next »