我一直在努力解决这个问题几天。问题是我有一个表格将数据输入MySQL数据库表并将该数据链接到服务ID。该表包含3个列:id
serviceid
和data
。我还有一个数组(使用json API),它输出data
下的所有项目(未链接到服务ID)。我要做的是将服务ID与数据匹配,然后只显示数组中的特定数据。
简而言之,如果我正在查看服务#186,它有2组数据,我希望能够从数组(而不是数据库)中提取数据。它应该只将与表格列[0]
匹配的数组项([2]
和data
)与数组项["name"]
一起提取。
+ ------------ + ----------- +
| ID | serviceid |数据
+ ------------ + ----------- +
| 3 | 186 | SomeMore |
| 2 | 185 | NotEnough |
| 1 | 186 | Data5 |
+ ------------ + ----------- +
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];
}
如果我在echo $data_array[0];
语句中foreach
,则会显示与当前服务相关的所有数据。
对不起,如果这没有多大意义。它让我疯狂。如果您需要更好的解释,我会尽我所能来澄清。
答案 0 :(得分:0)
您可以在$data_bits
数组中搜索,找到那些名称属性是查询结果之一的子数组。
$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];
}
}