2017-05-04 104 views
0

如何将我的值字符串从数组中的MYSQL转换?所以我可以使用array_unique。因为我在一列中有多个副本。当我回应出来。它显示全部使用PHP。我试过DISTINCT,但它只返回一列而不返回其他列。如何将字符串转换为PHP中的数组array_unique

enter image description here 保持重复名称(BOLD RED)。

代码:

$querysql= "SELECT * FROM `stock` WHERE ID = '$id' "; 

$fetchdata = $database->query($querysql); 

while($rows= $fetchdata->fetch_assoc()) { 

echo "<div id='companylocal'>"; 
    echo $rows['Company_Locate']; 
echo "</div>"; 
} 
+0

你会请更新您的问题与当前outputand什么是你想要的输出,因为我有点困惑与你的问题 –

+0

@BunkerBoy添加了一个图像。如果你检查它。它不断重复,这就是为什么它不能很好地对齐。 –

回答

0

使用GROUP BY试试这个,

$querysql= "SELECT * FROM `stock` WHERE ID = '$id' "; 

$fetchdata = $database->query($querysql); 

while($row= $fetchdata->fetch_assoc()) { 
    $rows[] = $row['Company_Locate']; 
} 
$rows = array_unique($rows); 
print_r($rows); 
+0

这是工作,但为什么有Array([0] => YoProgram Inst。[1] =>)Array(YoProgram Inst。[2] =>) –

+0

这是一种打印数组内容的方法。如果你想遍历一个使用foreach($行为$ v){echo $ v;} –

0

在查询

$querysql= "SELECT * FROM `stock` WHERE ID = '$id' GROUP BY Company_Locate"; 
+0

我试过了,但它不工作。它只是显示重复。 –

0

表名:测试


|     ID     |     colA     |     colB     |


|   |  值5   |  值C   |


|   |  值4   |  值B   |


|   |  值3   |  值B   |


|   |  值2   |  值B   |


|   |  值1   |  值A   |


从我上面的示例。 列(colA)具有唯一值,而列(colB)具有重复值。 分组柱(COLB)查询将返回唯一值的行从塔(COLB)

SQL:SELECT ID,可乐,COLB测试从GROUP BY COLB 返回:


|     ID     |     colA     |     colB     |


|   |  值1   |  值A   |


|   |  值2   |  值B   |


|   |  值5   |  值C   |


更多更好的解释请https://www.w3schools.com/sql/sql_groupby.asp

$DataFromDatabase = [ ['id' => 1, 
        'colA' => "value 1", 
        'colB' => "value A" 
        ], 
        ['id' => 2, 
        'colA' => "value 2", 
        'colB' => "value B" 
        ], 
        ['id' => 3, 
        'colA' => "value 3", 
        'colB' => "value B" 
        ], 
        ['id' => 4, 
        'colA' => "value 4", 
        'colB' => "value B" 
        ], 
        ['id' => 5, 
        'colA' => "value 5", 
        'colB' => "value C" 
        ] 
       ]; 
    echo "Data FROM database<br/>"; 

echo "<pre>"; print_r($DataFromDatabase); echo "</pre>";

//Unique Array $UniqueArray = [];

//Loop the Database result 
foreach($DataFromDatabase AS $data){ 
    //Make the unique value your key for your array 
    $UniqueArray[$data['colB']][] = ['id' => $data['id'], 
            'colA' => $data['colA'] 
            ]; 
} 

echo "Unique Array<br/>"; 
echo "<pre>"; 
print_r($UniqueArray); 
echo "</pre>"; 

您uniqueArray的结果将是 是这样的:

Array 
(
    [value A] => Array 
     (
      [0] => Array 
       (
        [id] => 1 
        [colA] => value 1 
       ) 

     ) 

    [value B] => Array 
     (
      [0] => Array 
       (
        [id] => 2 
        [colA] => value 2 
       ) 

      [1] => Array 
       (
        [id] => 3 
        [colA] => value 3 
       ) 

      [2] => Array 
       (
        [id] => 4 
        [colA] => value 4 
       ) 

     ) 

    [value C] => Array 
     (
      [0] => Array 
       (
        [id] => 5 
        [colA] => value 5 
       ) 

     ) 

) 

值堆叠在每个唯一列(colB)值上。 它现在取决于你如何打印你的阵列的价值

+0

很好的例子。假设我想显示id的4和3,并且在你的例子中它们在ColB中有重复。但是如果你在ColB的GROUP BY,他们不会显示。所以我只是在PHP中找到了一个unique_array的方法。但我有字符串,我不知道如何执行。 –

+0

嗨@MonPadi我更新了我的答案。希望它能帮助你。 –

+0

检查我的形象兄弟。感谢您帮助我到目前为止。 –