PHP-如何在数组数未知时合并数组,因为通过循环获取数组
正在与数组合并函数斗争。 当我们这样使用它时,它工作得很好PHP-如何在数组数未知时合并数组,因为通过循环获取数组,php,mysql,Php,Mysql,正在与数组合并函数斗争。 当我们这样使用它时,它工作得很好 array_merge($array1,$array2); 在我的例子中,两个数组都来自MySQL结果。 请参阅以下代码以更好地理解它 $getfilelist = 'select * from fileartist fid IN (210,209)'; // fetching two rows $FILE = $db->query($getfilelist); $file_tot = cou
array_merge($array1,$array2);
在我的例子中,两个数组都来自MySQL结果。
请参阅以下代码以更好地理解它
$getfilelist = 'select * from fileartist fid IN (210,209)'; // fetching two rows
$FILE = $db->query($getfilelist);
$file_tot = count($FILE);
for($i=0;$i<$file_tot;$i++)
{
$artist = explode(',', $FILE[$i]['artist']); // Because Artist names saved like this `A,B` in first row and `A,C,D` in second.
}
print_r($artist);
我想你应该-
Array
(
array[0] => A
array[1] => B
array[2] => C
array[3] => D
)
我尝试了以下代码
$getfilelist = 'select * from fileartist fid IN (210,209)'; // fetching two rows
$FILE = $db->query($getfilelist);
$file_tot = count($FILE);
for($i=0;$i<$file_tot;$i++)
{
$artist = explode(',', $FILE[$i]['artist']); // Because Artist names saved like this `A,B` in first row and `A,B,C` in second.
$merged = array_merge($artist);
$unique = array_unique($merged);
}
print_r($unique);
这不是预期的结果。
在上面的代码中,我需要这样的东西->数组\合并$FILE[0],$FILE[1];为了得到预期的结果。我不知道该怎么编码
我知道array\u merge函数需要两个或多个数组,但不知道如何将这两个数组都赋予array\u merge函数。
建议我如何在上述情况下仅打印A、B、C、D。是我错过了什么吗?或者这是一个编码错误的脚本?它应该可以使用这个脚本
array_unique(array_merge($array1,$array2), SORT_REGULAR);
您应该在SELECT查询中使用DISTICT关键字。如果使用DISTINCT MySQL,则只会提供唯一的值:
$getfilelist = 'SELECT DISTINCT * FROM fileartist fid IN (210,209)'
您的代码是正确的,您正在打印的问题是在循环中输出的
for($i=0;$i<$file_tot;$i++)
{
// .....
$merged = array_merge($artist);
$unique = array_unique($merged);
print_r($unique); // here is the issue
// .....
}
我已经修复了一个快速演示,以检查它是如何工作的,因此您希望从两个数据库行的“总和”中获得所有唯一的条目?例如,当$a=[a,B,C,D]和$B=[a,B,E]你想得到一个像$out=[a,B,C,D,E]这样的输出吗?好了:如果是这样问的话,我建议在MySQL中使用DISTINCT操作符。你不理解我的情况。阵列1、阵列2;这里的数组1,数组2在我的例子中是未知的。这才是真正的问题。好吧,我正在尝试。请和我在一起艺术家名称保存为字符串,如->第一行中的You、Me、第二行中的某人You、Me SQL,因为两者不相等。然后,您可以将要包含的行的select语句与将提供所有数据的select语句组合。在FROM部分中,您可以仅插入表中相关的值,这些值应该是唯一的,例如,从210、209Hoq中的FileArtister fid中选择*选择不同的名字,从FileArtister fid中选择lastName以在此处应用不同的->$getfilelist='SELECT DISTINCT*,fileartist,其中file.cid='.$parentid.'和fileartist.fid=file.id按kram desc'排序;当我走出循环时,它只打印第一行,不是两行都打印。不行,伙计。打印数组[0]=不是第一行的全部艺术家。你能为我推荐一个适合这篇文章的好标题吗?如果您正确理解了这个问题。在您的演示中,您在lool之前声明了$FILE[0]和$FILE[1]。但在我的代码中,这两个在循环之前都是未知的。我静态地定义了数组,因为您要从数据库中获取数据,所以我必须这样做才能使我的示例正常工作,您需要确实编辑我的示例
$getfilelist = 'SELECT DISTINCT * FROM fileartist fid IN (210,209)'
for($i=0;$i<$file_tot;$i++)
{
// .....
$merged = array_merge($artist);
$unique = array_unique($merged);
print_r($unique); // here is the issue
// .....
}
$merged = array();
for($i=0;$i<$file_tot;$i++)
{
$artist = explode(',', $FILE[$i]['artist']); // Because Artist names saved like this `A,B` in first row and `A,B,C` in second.
$unique = array_unique(array_merge($merged, $artist));
}
print_r($unique);