我能够将一个字符串拆分成一个数组
$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”方法但是没有用 - 虽然所有谷歌搜索引导我得到相同的结果(如上所述)
希望你能帮忙感谢
答案 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”)并将其拆分。离开上面的例子,因为我猜它更容易阅读/更清楚