0

我有 2 个数组 - 第一个是第一个完整输出的。第二个可能有一些已经被第一个数组使用/输出的值。我想“清理”第二个数组,这样我就可以输出它的数据而不必担心显示重复。只是为了确保我有正确的术语并且没有某种“数组中的数组”,这就是我访问每个数组的方式:

第一个阵列

$firstResponse = $sth->fetchAll();
foreach ($firstResponse as $firstResponseItem) {
    echo $firstResponseItem['samecolumnname']; // Don't care if it's in 2nd array
}

第二阵列

while( $secondResponseRow = $dbRequest->fetch_assoc() ){
    $secondResponseArray = array($secondResponseRow);
    foreach ($secondResponseArray as $secondResponseItem){
        echo $secondResponseItem['samecolumnname']; //This can't match anything above
    }
}

谢谢!

4

3 回答 3

1

例如:

$response_names = array();
$firstResponse = $sth->fetchAll();
foreach ($firstResponse as $firstResponseItem)
    $response_names[] = $firstResponseItem['samecolumnname'];

while( $secondResponseRow = $dbRequest->fetch_assoc() ){
    $secondResponseArray = array($secondResponseRow);
    foreach ($secondResponseArray as $secondResponseItem) {
        if (!in_array($secondResponseItem['samecolumnname'], $response_names))
            $response_names[] = $secondResponseItem['samecolumnname'];
    }
}

array_walk($response_names, function($value) { echo $value . '<br />' });
于 2013-06-21T18:40:21.987 回答
0

如果我了解您要做什么并且数组在同一范围内,那么这应该可以。

$secondResponseArray = array($secondResponseRow);
$secondResponseArray = array_diff($secondResponseArray, $firstResponse); 
//secondResponseArray now contains only unique items
foreach ($secondResponseArray as $secondResponseItem){
    echo $secondResponseItem['samecolumnname'];
}
于 2013-06-21T18:37:58.593 回答
0

如果您知道重复值的键将是相同的,您可以使用array_diff_assoc来获取第一个数组中不在其他提供的数组中的项。

这段代码

<?php
$a = array('abc', 'def', 'ghi', 'adg');
$b = array('abc', 'hfs', 'toast', 'adgi');
$r = array_diff_assoc($b, $a);

print_r($a);
print_r($r);

产生以下输出

[kernel@~]php so_1.php 
Array
(
    [0] => abc
    [1] => def
    [2] => ghi
    [3] => adg
)
Array
(
    [1] => hfs
    [2] => toast
    [3] => adgi
)
[kernel@~]
于 2013-06-21T18:43:55.307 回答