有逗号时拆分数组值

时间:2010-09-03 07:54:22

标签: php database arrays split

我能够将一个字符串拆分成一个数组

$array  = preg_split("/[\s]*[,][\s]*/", $category); 

RESULT 

Array ( [0] => jquery[1] => bla[2] => bla);

但现在我有一个数据库,其中一行按类别保存(“cat1,2,3,...”) - 多个记录具有相似的类别 - 所以为了创建一个快速的“类别”菜单我正在使用这段代码代码:

           while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
{
        $category[] = $row[category];
}   
    $array = array_unique($category);

你可以想象结果是这样的:

数组([0] => bla1,bla2,bla3 [1] => bla6,bla4 [2] => bla11 ....);

有没有办法滑动这个数组,以便(再一次)得到一个滑动阵列

我使用了上面的“array_unique”方法但是没有用 - 虽然所有谷歌搜索引导我得到相同的结果(如上所述)

希望你能帮忙

感谢

1 个答案:

答案 0 :(得分:3)

首先:使用explode()函数分割字符串更容易。

猜猜你想做什么我写了一些代码示例:

<?php
$dbRows = array("x,y,z", "a,b,c", "y,b,c");

$allCats = array();
foreach($dbRows as $row) {
    $allCats = array_merge($allCats, explode(",", $row));
}

var_dump(array_unique($allCats));

/*
array(6) {
  [0]=> string(1) "x"
  [1]=> string(1) "y"
  [2]=> string(1) "z"
  [3]=> string(1) "a"
  [4]=> string(1) "b"
  [5]=> string(1) "c"
}
*/

所以你取出所有的值,用这些值填充一个大数组,并在最后过滤掉它。

我希望这是你要做的。


在旁注中:一般来说,在数据库中存储需要执行字符串操作的东西并不被视为“良好实践”。 您可能只希望每列存储一个值,以使您的生活更轻松。

(请参阅此Stackoverflow问题:What is Normalisation (or Normalization)?

修改

上述代码的较短版本,具有相同的输出:

<?php
$dbRows = array("x,y,z", "a,b,c", "y,b,c");
$allCats = explode(",", implode(",", $dbRows));
var_dump(array_unique($allCats));

这会创建一个大字符串(“x,y,z,a,b,c,y,b,c”)并将其拆分。离开上面的例子,因为我猜它更容易阅读/更清楚

相关问题