Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何避免重复字符串中的单词_Php_Arrays - Fatal编程技术网

Php 如何避免重复字符串中的单词

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 = '$

我正在编写一个代码,其中我使用php从mySQL数据库中获取一个特定的行。我从行中获取的值类似于
“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>";
    }