Php 需要一个简单的编程逻辑解决方案。。

Php 需要一个简单的编程逻辑解决方案。。,php,arrays,cakephp,logic,cakephp-2.1,Php,Arrays,Cakephp,Logic,Cakephp 2.1,我正在研究CakePHP2.x,但现在我的问题与语法无关。我需要解决这个问题: 我有一个名为messages的表,其中有一个字段名mobile number。数字的格式如下: 12345678和+9112345678。。所以他们都是一样的。唯一的区别是在一个数字中缺少国家代码 因此,我在数据库中执行以下查询: 从消息表中选择不同的编号。。 现在,它将这两个数字视为不同的。但我想把这两个数字作为一个。 我该怎么做?在我的数据库中,有几个数字具有不同的国家代码。有些有国家代码,有些没有,但我想两者合

我正在研究CakePHP2.x,但现在我的问题与语法无关。我需要解决这个问题: 我有一个名为messages的表,其中有一个字段名mobile number。数字的格式如下:

12345678和+9112345678。。所以他们都是一样的。唯一的区别是在一个数字中缺少国家代码

因此,我在数据库中执行以下查询: 从消息表中选择不同的编号。。
现在,它将这两个数字视为不同的。但我想把这两个数字作为一个。 我该怎么做?在我的数据库中,有几个数字具有不同的国家代码。有些有国家代码,有些没有,但我想两者合二为一。一个是国内代码,另一个没有代码。如何做到这一点

有时我有一个数组,其中存储了所有不同的数字。在该数组中,有如下数字: 12345678+9112345678


所以现在我不知道如何做一个逻辑,我可以把这些数字作为一个。如果对此有任何解决方案,请与我们分享一些示例代码。

我认为您无法在数据库级别执行此操作

您必须执行以下操作:

  • 创建所有国家/地区代码的数组(包括
    +
    符号)

  • 从数据库中获取所有数字

  • 使用
    array\u map()
    并在回调中对每个 元素,如果匹配,则删除 从号码中选择国家代码

  • 最后,在步骤4完成后,运行数字数组
    array\u unique()

  • 代码:

    经过测试,
    var\u dump($distinct\u sanitized\u number)
    的输出为:

    array(4) {
      [0]=>
      string(11) "33445322453"
      [1]=>
      string(4) "3232"
      [3]=>
      string(4) "4343"
      [4]=>
      string(5) "24343"
    }
    

    “把这两个数字当作一个”?呵呵?你的意思是12345678912345678?带国家代码的数字是否总是带有前导的
    +
    符号?不。。你误会我了。。。请看这两个数字之间的唯一区别是国家1.一个有国家代码,另一个没有。。这意味着它是一个人的手机号码。。。因此,这就是为什么我想在我的查看页面上显示数字选项,而不是同时从消息中选择不同的(替换(数字,+91’,”)。我不确定它是否会起作用,但请尝试一下对于现有条目,您现在不能做太多,但您应该在将新编号添加到数据库之前验证它们。我想我必须使用您的解决方案。。。谢谢..尽管我以前从未使用过array_map()和array_unique,但还是让我试试这个吧:太感谢你了。。。我正在努力做。。。如果出现问题,我会通知你使用国家代码。。。我没有得到这个。。。这不是php语法。这里的函数($number)使用$country\u code我已经试过你的例子了。。问题仍然存在。它正在打印两个数字,但它删除了国家代码。。。如果你说我能告诉你我现在查的是什么号码
    array(4) {
      [0]=>
      string(11) "33445322453"
      [1]=>
      string(4) "3232"
      [3]=>
      string(4) "4343"
      [4]=>
      string(5) "24343"
    }