2011-03-07 29 views
1

我有一些数字,这将是一个SQL查询,像这样的一部分...PHP,我怎样才能产生一个唯一的数字列表?

152258, 152258, 152258, 152258, 152261, 152261, 152261, 152261, 152261, 152270, 
152270, 152270, 152287, 152287, 152287, 152287 

我的查询是相当复杂的,名单很长,我需要产生一个唯一的数字列表,可以我用正则表达式来做这件事?

如果不是如何?

+0

你能*先筛选号码列表*把他们的SQL? – salathe 2011-03-07 07:36:20

+0

您想要生成唯一的数字还是要滤除重复? – Eddie 2011-03-07 07:37:22

+0

请进一步解释,这些数字是否已经生成,是否需要将它们放入数据库中,是否有任何因素,如最小和最大值要考虑,它们是否应该在数据库中是唯一的? – RobertPitt 2011-03-07 07:38:45

回答

2

这里是你如何让你的字符串有唯一编号: http://codepad.org/cziNtZOS

<?php 

$myString = "152258,152258,152258,152258,152261,152261,152261,152261,152261,152270,152270,152270,152287,152287,152287,152287"; 
$array = explode(",",$myString); 
$unique = array_unique ($array ); 
$myUniqueString = implode(",",$unique); 
echo $myUniqueString ; 
?> 
0

使用RANGE()

REFERENCE

+0

尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Thor 2012-08-15 12:15:03

1

我正想写一个函数给你,原来PHP有一个已经:array_unique()

编辑:在任何情况下,这是一个替代方法:

function uniquify_array($a) 
{ 
    $b = array(); // I wish I could write just $b = {}; 
    foreach ($a as $i) 
     $b[$i] = $i; 
    return $b; 
} 

请注意,这种乐趣ction仅与值一起使用,而内置的array_unique()保留原始数组中的键。

1

如果你想有一个数字范围使用PHP的范围()方法

如果你想要一个唯一的数字列表,你可以使用PHP的兰特()方法

范围():http://php.net/manual/en/function.range.php

兰特():http://php.net/manual/en/function.rand.php

编辑 正如@RobertPitt指出,uniqid可用于生成的ID以及:http://php.net/manual/en/function.uniqid.php

+0

'uniqid'也可以添加imo! – RobertPitt 2011-03-07 07:39:59

+0

@RoberyPitt,谢谢你,不知道这种方法。编辑! – JohnP 2011-03-07 07:59:05

1

产生一些组号码,然后只用array_unique功能

$nums = array();

for ($i = 0; $i < $limit; $i++) { $nums[] = rand() * 10000;

$nums = array_unique($nums);

}

苏丹

相关问题