2

我有一个正在为自动化任务编写的脚本,所以我并不担心干净的代码,因为它只会被使用一次。

该脚本读取一个平面文件并将信息存储到一个数组中,该数组稍后将用于从数据库中读取某些内容。

但是,我只想要数字数据,所以我使用了 preg_replace() 和逗号。我的代码如下。

这些是使用循环从平面文件中的值中读取的。

$store = array();
$store[] = 111;
$store[] = 2;
$store[] = 4;
$store[] = 55;
$store[] = 66;
$store[] = 'Kilory';
$store[] = 9090;

$theList[$i] = preg_replace( '/[^0-9,]/u', '', implode( ',', $store ) );
unset( $store );

这给我的结果是 0,2,4,55,66,,9090。如果我要尝试在 mysql IN() 语句中使用该信息,由于两个逗号相邻,它会向我吐出一个错误。删除彼此相邻的重复项的最佳方法是什么?

谢谢!

4

3 回答 3

3

重复的逗号,包括标题和尾随逗号,您可以使用 . 删除$string = trim(preg_replace('#,{2,}#', ',', $string), ',');

于 2013-04-10T15:44:27.523 回答
1

PHP 为此提供了一个过滤器功能:

$store = array();
$store[] = 111;
$store[] = 2;
$store[] = 4;
$store[] = 55;
$store[] = 66;
$store[] = 'Kilory';
$store[] = 9090;

$theList[$i] = implode(',', array_filter($store, 'is_numeric'));
unset($store);
于 2013-04-10T16:13:24.507 回答
0

循环遍历store[]值时,使用该is_numeric()函数检查值是否为数字。如果是,请添加逗号,如果不是,请不要。

手动的

于 2013-04-10T15:48:07.340 回答