这几天我一直在努力解决这个问题。问题是我有一个表单,可以将数据输入 MySQL 数据库表并将该数据链接到服务 ID。该表包含 3 列:id
、serviceid
和 data
。我还有一个数组(使用 json API),它输出 data
下的所有项目(未链接到服务 ID)。我想要做的是将服务 ID 与数据进行匹配,然后仅显示数组中的特定数据。
简而言之,如果我正在查看服务 #186,它具有我希望能够从数组(而不是数据库)中提取的 2 组数据。它应该只拉取与表列 data
与数组项 匹配的数组项(
。[0]
和 [2]
) [“名称”]
+------------+------------+
|编号|服务编号 |数据
+------------+------------+
| 3 | 186 | 186更多 |
| 2 | 185 | 185还不够|
| 1 | 186 | 186数据5 |
+------------+------------+
array {
["data_bits"]=>
array(5) {
[0]=>
array(3) {
["name"]=> "Data5"
["info"]=> "some info"
["comment"]=> "cool beans"
}
[1]=>
array(3) {
["name"]=> "NotEnough"
["info"]=> "some cool info"
["comment"]=> "warm beans"
}
[2]=>
array(3) {
["name"]=> "SomeMore"
["info"]=> "some bad info"
["comment"]=> "hot beans"
}
}
目前,我的 SQL 查询将选择具有服务 ID 的项目。
$get = $pdo->prepare("SELECT data FROM table WHERE serviceid=:serviceid");
$get->bindParam(':serviceid', $serviceid, PDO::PARAM_STR);
$get->execute();
$data_array = array();
while ($db_data = $get->fetch()) {
$data_array[] = $db_data[0];
}
如果我在 foreach
语句中echo $data_array[0];
,它会显示与当前服务相关的所有数据。
抱歉,如果这没有多大意义。这让我发疯。如果您需要更好的解释,我会尽力澄清。
最佳答案
您可以在 $data_bits
数组中搜索,以查找具有作为查询结果之一的 name 属性的子数组。
$get = $pdo->prepare("SELECT data FROM table WHERE serviceid=:serviceid");
$get->bindParam(':serviceid', $serviceid, PDO::PARAM_STR);
$get->execute();
$result = $get->fetchAll();
$search_values = array();
$wanted_data = array();
foreach($result as $row) {
$search_values[] = $row['data'];
}
foreach($data_bits as $key => $value) {
if (in_array($value['data'], $search_values)) {
$wanted_data[] = $data_bits[$key];
}
}
关于php - 显示与数据库数据匹配的某些数组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33818599/