1

可以说这是我的 sql 数据库列值:

Result  -      Reference

  1                A1
  2                A2
  3                A3
  4                A4
  5                A5

获取上述列后,我有以下数组:

$inputValue = array(1,3,5);  //This is the User Input

$result = array(1,2,3,4,5); //This is the mysql fetched result of 'Results' column

$reference = array('A1','A2','A3','A4','A5'); //This is the fetched result of 'Reference' column

$filteredData = array_intersect($inputValue, $result);

print_r($filteredData);

当我这样做时array_intersect($inputValue, $result);,输出:

Array ( [0] => 1 
    [1] => 3 
    [2] => 5 )

现在在 array_intersect 之后,我将如何将相应的引用存储到另一个数组中?意思是,在相交之后,$filteredData有数组 values 1,3,5。现在我还希望将相应的引用存储在一个单独的数组中,该数组应该具有以下值:$MatchingReference = array(A1,A3,A5);

这是怎么做到的?

4

3 回答 3

2

我会试试这个:

$filteredReferences = array();
foreach($filteredData as $key) {
    $filteredReferences[] = $reference[$key-1];
}
于 2014-01-17T22:00:51.160 回答
1

Combine the two arrays from the database into an associative array. Then use the user input to select only a subset of keys.

$filteredData = array_intersect_key(
    array_combine($result, $reference), 
    array_flip($inputValue)
);
于 2014-01-17T22:05:22.757 回答
1

如果这是我自己的应用程序中的一项任务,我肯定会使用 SQL 而不是 PHP 来实现数据过滤器

否则,您将需要执行一些操作才能享受有效的基于密钥的过滤并达到您想要的输出。(演示

var_export(
    array_intersect_key(
        array_column($resultSet, 'reference', 'result'),
        array_flip($inputValue)
    )
);
于 2022-02-22T14:09:37.480 回答