我有使用数组的php mssql查询代码,但输出不会删除相同的字符。我的代码在这里
$querysfzzrf88 = " SELECT * FROM Style WHERE StyleNo='$StyleNo'";
$resultsfzzrf88 = mssql_query($querysfzzrf88);
//display the results
while($rowsfzzrf88 = mssql_fetch_array($resultsfzzrf88))
{
$Status88 = $rowsfzzrf88["Status"];
echo $Status88;
}
输出
LNNNMMMMMMM
还有
var_dump($Status88);
像这样的
string(1) "N" string(1) "N" string(1) "N" string(1) "L"
我想要输出
LNM
使用count_chars()
$str = "LNNNMMMMMMM";
echo count_chars($str, 3);
第二个参数是mode
,
3 - a string containing all unique characters is returned.
点击此处查看演示
编辑
试试这个,
$str = " LNNNMMMMMMM";
echo preg_replace("/(.)''1+/", "$1", $str); or echo preg_replace('/(.)'1+/', '$1', $str);
请参阅此处的演示
在mysql查询中使用DISTINCT
以避免重复值:
$querysfzzrf88 = " SELECT DISTINCT status FROM Style WHERE StyleNo='$StyleNo'";
$resultsfzzrf88 = mssql_query($querysfzzrf88);
//display the results
while($rowsfzzrf88 = mssql_fetch_array($resultsfzzrf88))
{
$Status88 = $rowsfzzrf88["Status"];
echo $Status88;
}
如果我误解了你的问题,很抱歉,这是你所期望的吗:
<?php
$chars = 'LNNNMMMMMMM';
$array = str_split($chars);
$array = array_count_values($array);
$array = array_flip($array);
echo implode('', $array);
?>
它产生LNM
作为
更新:
//display the results
$duplicated88 = $Status88 = $unique88 = array();
while($rowsfzzrf88 = mssql_fetch_array($resultsfzzrf88)){
$duplicated88[] = $Status88[] = $unique88[] = $rowsfzzrf88["Status"];
}
sort($unique88);
sort($duplicated88);
$unique88 = implode('', array_unique($unique88));
print($unique88);