繁体   English   中英

逗号分隔数组值

[英]split array values when there is a comma

我能够将字符串拆分为数组

$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”方法,但没有用-尽管所有的google搜索都导致我得到相同的结果(即上述结果)

希望你能帮忙

谢谢

首先:使用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问题: 什么是规范化(或规范化? )。

编辑

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

<?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”)并将其拆分。 离开上面的示例,因为我猜想它更容易阅读/清晰

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM