0

我刚开始 PHP 编程,有以下场景;

  1. 我的联系人列表保存在 mysql 数据库中 (Fname, Lname, phone) = 完成
  2. 将用户输入想象成从移动键盘获取。即“abc”对应于 1,“def 对应于 2”等。
  3. 假设用户输入“738”......这将对应于“PET”,“REU”也是如此。
  4. php 代码要做的是以数字形式获取用户输入,然后通过 mysql 数据库搜索姓氏,看看它是否对应于任何名字,最后列出这些联系人。但是,由于 'SET' 也是 738 BUT 的有效组合,如果它在数据库中不存在,则不会显示。

问题:如何以数字形式输入并生成所有可能的组合以匹配数据库?我想我将不得不使用数组来存储移动键盘映射并以某种方式进行排列。任何帮助将不胜感激。

4

1 回答 1

1

我很想听到更多关于在 2014 年仍然值得编程的用例。

如果您真的想这样做,您可以列举所有可能性并以这种方式进行搜索,例如:

222 = AAA, AAB, AAC, ABA, ABB, ABC, ACA, ACB, ACC, BAA, BAB, BAC,  BBA, BBB, BBC, BCA, BCB, BCC, CAA, CAB, CAC, CBA, CBB, CBC, CCA, CCB, CCC

这是 3 个立方 (27) 的可能性。

但是,如果您有 7 个数字,则您有 3^7th 或 2187 个排列,这将是一个不虔诚的OR LIKE 'AAAAAAA%'链。

然而,这种方法是倒退的。您应该做的是为您想要使用此方法搜索mobile-keypad-name的任何内容添加一个name,并使用代表数字预先填充它 - 每个name.

SQL 查找然后是直截了当的:

WHERE mobile-keypad-name = "2222222";
于 2014-02-09T00:58:43.187 回答