从字符串值构建数组

时间:2016-03-06 17:39:02

标签: php

我有一个表,其中一列数据存储为以逗号分隔的字符串。

我需要输出表内容并根据这些值构建一个数组(不需要任何键)。

我需要删除重复项并按字母顺序对其进行排序。

$arr = array();

foreach ($myTable AS $t) {
    $str = $t->myStr;
    array_push($arr, $str);
} 

array_unique($arr);
asort($arr);

我做了print_r($ arr);现在我看到了值,但它们仍然是一个字符串数组。像这样:

  

数组([1] =>中文,亚洲融合,食物卡车[0] =>中文,   亚洲融合,无麸质[2] => Chinese,Barbeque [3] =>点心,   海鲜,汤)

我希望看到的是:

  

阵列('亚洲融合','烧烤','中国','食品卡车',   '无麸质' ...);

2 个答案:

答案 0 :(得分:3)

您必须更改此行:

array_push( $arr, $str );

在:

$arr = array_merge( $arr, explode( ',', $str) );

和此:

array_unique( $arr );

在:

$arr = array_unique( $arr );

array_push()将逗号分隔的字符串添加到数组中。使用explode()获取具有单个值的数组,然后必须将此数组与主数组合并。你不能将array_push()与爆炸数组一起使用,因为使用它会得到一个多维数组([[中文,亚洲,...],[中文,亚洲,......]]。< / p>

array_unique()不会更改原始数组,但会返回修改后的数组,因此您必须在变量中捕获结果。

编辑:

分隔符必须是完整分隔字符串 所以,如果你的字符串是这样的:

Chinese, Asian Fusion, Food Trucks
        ^             ^

你必须使用:

$arr = array_merge( $arr, explode( ', ', $str) );
//                                   ^

答案 1 :(得分:2)

$arr = array();

foreach ($myTable AS $t) {
    $str = $t->myStr;
    $arr = array_merge($arr, explode(', ', $str))
} 

$arr = array_unique($arr);
asort($arr);

print_r($arr);