Kachalov Anton wrote:
> I found, that HashTable->arBuckets[*] contained field nKeyLength which
> equal to zero for all elements and condition:
> 
> vvvvvvvvvvvvvvvvvv
> if (p->nKeyLength)
>     zend_hash_update(out_hash, p->arKey, p->nKeyLength, &entry,
> sizeof(zval *), NULL);
> ^^^^^^^^^^^^^^^^^^
> else
>     zend_hash_next_index_insert(out_hash, &entry, sizeof(zval *), NULL);
> 
> will fail
> 
> Is this correct ?
> 
> Rgds,
> Anton
> 

I think the idea is "Update if hash key is string. Insert if
hash is is numeric".

$array = 
array("32"=>"elem1","54"=>"elem2","23"=>"elem3","92"=>"elem4","3"=>"elem5");

Since hash key is checked if it can be numeric index, so
array_splice does change key. as Kachalov pointed out.

We might want to add optional parameter to array_splice() and
check numeric index also.

Andrei, what do you think?

--
Yasuo Ohgaki

Kachalov Anton wrote:
 > Hi 2 all!
 >
 > I have some problems with functions, which uses low-level function 
php_splice() in ext/standard/array.c
 >
 > This code will produce:
 >
 > Array
 > (
 >      [0] => elem1
 >      [1] => elem2
 > )
 >
 > instead of:
 > Array
 > (
 >      [32] => elem1
 >      [54] => elem2
 > )
 >
 > <?
 > $array = 
array("32"=>"elem1","54"=>"elem2","23"=>"elem3","92"=>"elem4","3"=>"elem5");
 > //print_r($array); outputs array with normal key => data
 > echo "\n\n";
 > reset($array);
 > array_splice($array, 2); // outputs array with index => data
 > print_r($array);
 > ?>
 >
 > What does it mean ?


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to