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