dbmnextkey

(PHP 3, PHP 4, PECL)

dbmnextkey --  Retrieves the next key from a DBM database

Description

string dbmnextkey ( resource dbm_identifier, string key )

Returns the next key after key. By calling dbmfirstkey() followed by successive calls to dbmnextkey() it is possible to visit every key/value pair in the dbm database. For example:

Пример 1. Visiting every key/value pair in a DBM database

<?php

$key
= dbmfirstkey($dbm_id);
while (
$key) {
   echo
"$key = " . dbmfetch($dbm_id, $key) . "\n";
  
$key = dbmnextkey($dbm_id, $key);
}

?>



dbmnextkey
fischer at schlund dot de
19-Mar-2001 10:08
When you have a key "0" or so in your DB, then the example don't works, because "while ($key)" will return false for 0 ...
I had good experiences with "while (strlen($key)>0)" as condition ... because when we have the last key false is returned and false evaluates to "nothing" ...
fred at ontosys dot com
12-Oct-2000 10:41
dbmnext() seems to lose the thread if the program deletes keys as it walks through all rows.  I imagine that something similar happens with inserts.  One way around this is to make two passes:  one to collect the keys and one to manipulate the rows.  For example:

$old_keys = array();
for ($key = dbmfirstkey($db); $key; $key = dbmnextkey($db, $key)) {
  $old_keys[] = $key;
}
while (list($_, $key) = each($old_keys)) {
   dbmdelete($db, $key);
}
hiongun at kt dot co dot kr
08-Oct-1999 07:52
$key = dbmnextkey($dbm_id, $key) returns
"" on the second call.
karutla at hotmail dot com
01-Oct-1999 04:14
$key = dbmfirstkey($dbm_id);
while ($key) {
   dbmreplace($dbm_id, $value);
   $key = dbmnextkey($dbm_id, $key);
}

doesn't seem to iterate through all the records properly.

<dbminsertdbmopen>
 Last updated: Tue, 15 Nov 2005