我是这方面的新手,在开始这个主题之前,我已经阅读了很多关于这个问题的内容(包括这里的一些主题),但是我还没有完成,所以我会请求一些帮助(如果有的话)是可能的):))
因此,在我要打印的列中,我在每一行都有这样的值:
值1 |值2 |值5 | value12 | value25
值3 |值5 | value12 | value14 | value26 | VALUE32 | value55
值1 |值2 | value14 | value26 | value31
行数可以是3或1500 + ...所以我想合并数组并打印那些已排序且没有重复的值:value1,value2,value3,value5,value12等...
我试图爆炸数组,但我无法找到如何为每个数组分配变量并合并它们,我所做的就是打印所有值:
foreach ($rows as $areas) {
foreach (explode('|', $areas->value) as $area) {
var_dump($area);
}
}
之后我读过某个地方,如果我有很多行(而且我会有成千上万的话)会很慢,所以我被困在这里,我不知道还能做些什么......
我会感谢你能给我的任何帮助和方向,因为这对我来说太难了,没有帮助我就无法做到这一点
提前谢谢
答案 0 :(得分:0)
您可以将展开的字符串的每个值存储为键(如果它不是对象也不是数组),它只存储唯一值。然后你必须使用array_keys()
获取密钥并对返回的数组进行排序:
$rows = array(
'value1|value2|value5|value12|value25',
'value3|value5|value12|value14|value26|value32|value55',
'value1|value2|value14|value26|value31'
);
$results = array();
foreach ($rows as $row) {
$items = explode('|', $row);
foreach ($items as $item) {
$results[$item] = 0;
}
}
$results = array_keys($results);
sort($results, SORT_NATURAL);
答案 1 :(得分:0)
有两种方法可以做到这一点:
<?php
$str = 'value1|value2|value5|value12|value25';
$str1 = 'value3|value5|value12|value14|value26|value32|value55';
$str2 = 'value1|value2|value14|value26|value31';
//-- Method 1: Concat and make a single string and then explode and make a single array
$finalString = $str . '|' . $str1 . '|' . $str2;
print_r(array_unique(explode('|', $finalString)));
//-- Method 2: explode first and then merge into a single array
$strArr = explode('|', $str);
$strArr1 = explode('|', $str1);
$strArr2 = explode('|', $str2);
print_r(array_unique(array_merge($strArr, $strArr1, $strArr2)));