任何人都可以告诉我,哈希函数在tcl数组中是如何工作的。
<html>
<body>
<form method="post">
Insert: <input type="text" name="q" value="Tim"/>
<input type="submit" value="Submit">
</form>
<?php
if (isset($_POST['q'])) {
$test_name = $_POST['q'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "personnames";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$people = 'I';
$stmt = $conn->prepare("INSERT INTO names (person) VALUE=(?) where
person_initial=(?)");
$stmt->bind_param("ss",$test_name,$people);
$stmt->execute();
$stmt->close();
$conn->close();
}
?>
</body>
</html>
对于这个程序,我得到如下输出。
21 entries in table, 16 buckets 17 18 1 20 19 2 3 4 5 6 7 8 9 10 11 30 12 13 14 15 16
我想知道,按键在哪里打印。
答案 0 :(得分:1)
array names
命令以“任意”顺序生成数组的键。它实际上是底层哈希表的当前自然迭代顺序,它可以随着数组的增长而改变,除了通过引用数组的实现和历史之外,实际上很难解释。因为它太难了,我们只是倾向于说“随机”;它不是,但也可能是(除了产生随机数之外的目的;它是一个可怕的 PRNG)。它总是像这样工作。其他array
子命令将使用相同的顺序,尤其是array get
和非常少使用的迭代器子命令。
如果您需要特定订单,则必须自行对其进行排序。 lsort
命令可能对此有用。或者您可以使用dict
;那些维护插入顺序(但在技术上是值,因此您不能trace
元素或upvar
它。