dbmnextkey

(PHP 3, PHP 4, PECL)

dbmnextkey -- 

说明

string dbmnextkey ( resource dbm_identifier, string key )

Returns the next key after key.

参数

dbm_identifier

The DBM link identifier, returned by dbmopen().

key

The previous key

返回值

The next key if possible

范例

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);
}

?>


add a note add a note User Contributed Notes
fischer at schlund dot de
19-Mar-2001 06: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 05: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 02:52
$key = dbmnextkey($dbm_id, $key) returns
"" on the second call.
karutla at hotmail dot com
01-Oct-1999 11: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.