我有一个表,其中一列数据存储为以逗号分隔的字符串。
我需要输出表内容并根据这些值构建一个数组(不需要任何键)。
我需要删除重复项并按字母顺序对其进行排序。
$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] =>点心, 海鲜,汤)
我希望看到的是:
阵列('亚洲融合','烧烤','中国','食品卡车', '无麸质' ...);
答案 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);