Php 如何避免重复字符串中的单词
我正在编写一个代码,其中我使用php从mySQL数据库中获取一个特定的行。我从行中获取的值类似于Php 如何避免重复字符串中的单词,php,arrays,Php,Arrays,我正在编写一个代码,其中我使用php从mySQL数据库中获取一个特定的行。我从行中获取的值类似于“CSS、HTML、JAVASCRIPT、AJAX、BOTSTRAP、DJANGO、LAYNX、BOTSTRAP、JQUERY、AJAX”这是一行中的单个句子/值。我想要的是将这个句子转换成一个数组,删除重复的值并进一步使用该数组。对不起,我不清楚。我是新手。我的代码如下 <?php $sql = "SELECT * FROM user_info WHERE user_id = '$
“CSS、HTML、JAVASCRIPT、AJAX、BOTSTRAP、DJANGO、LAYNX、BOTSTRAP、JQUERY、AJAX”
这是一行中的单个句子/值。我想要的是将这个句子转换成一个数组,删除重复的值并进一步使用该数组。对不起,我不清楚。我是新手。我的代码如下
<?php $sql = "SELECT * FROM user_info WHERE user_id = '$user_id' ";
$run_query = mysqli_query($con,$sql);
$row = mysqli_fetch_array($run_query);
$string = $row["skills_covered"];
$string = array_unique(explode(",", $string));
$count=count($string);
for($ib=0;$ib<$count;$ib++){
echo "<li><a href='#' > $count |$string[$ib] </a></li>";
}
?>
我想要的输出是
8|CSS
8| HTML
8| JAVASCRIPT
8| AJAX
8| BOTSTRAP
8|DJANGO
8| LAYNX
8|JQUERY
提前感谢您的问题是,在
分解字符串后,某些值中有空格,因此它们之间的比较不相等。您可以通过使用并拆分逗号上的字符串来避免这种情况,逗号前面或后面可能有空格:
$skills = array_unique(preg_split('/\s*,\s*/', $string));
$count = count($skills);
foreach ($skills as $skill) {
echo "<li><a href='#' > $count |$skill </a></li>";
}
$skills=array_unique(preg_split('/\s*,\s*/',$string));
$count=计数($skills);
foreach($skills作为$skill){
回声“”;
}
输出:
<li><a href='#' > 8 |CSS </a></li>
<li><a href='#' > 8 |HTML </a></li>
<li><a href='#' > 8 |JAVASCRIPT </a></li>
<li><a href='#' > 8 |AJAX </a></li>
<li><a href='#' > 8 |BOTSTRAP </a></li>
<li><a href='#' > 8 |DJANGO </a></li>
<li><a href='#' > 8 |LAYNX </a></li>
<li><a href='#' > 8 |JQUERY </a></li>
请注意,由于array\u unique
返回数组的原始键,因此不能使用for
循环对值进行迭代,因为具有重复值的键将丢失(在您的情况下,for
循环将在$ib=7
时失败)。一个foreach
循环可以解决这个问题。如果不验证$user\u id
,您可能会受到攻击。我们看不到您是如何设置此值的。$user\u id是会话变量。很抱歉,没有显示它
<?php
// String
$string = "CSS, HTML, JAVASCRIPT, AJAX, BOTSTRAP,DJANGO, LAYNX,BOTSTRAP,JQUERY,AJAX";
// Split
$explodedArray = explode(",", $string);
// Trim on whole array
$trimmedArray = array_map('trim', $explodedArray);
// Remove duplicates
$perfectArray = array_unique($trimmedArray);
// Rest
$count = count($perfectArray);
for($ib=0; $ib < $count; $ib++){
echo "<li><a href='#'>$count | $perfectArray[$ib]</a></li>";
}
<?php
// String
$string = "CSS, HTML, JAVASCRIPT, AJAX, BOTSTRAP,DJANGO, LAYNX,BOTSTRAP,JQUERY,AJAX";
// Split
$explodedArray = explode(",", $string);
// Trim on whole array
$trimmedArray = array_map('trim', $explodedArray);
// Remove duplicates
$perfectArray = array_unique($trimmedArray);
// Rest
$count = count($perfectArray);
for($ib=0; $ib < $count; $ib++){
echo "<li><a href='#'>$count | $perfectArray[$ib]</a></li>";
}