Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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_Mysql - Fatal编程技术网

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);