显示与数据库数据匹配的某些数组数据

时间:2015-11-20 03:42:18

标签: php mysql arrays

我一直在努力解决这个问题几天。问题是我有一个表格将数据输入MySQL数据库表并将该数据链接到服务ID。该表包含3个列:id serviceiddata。我还有一个数组(使用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,则会显示与当前服务相关的所有数据。

对不起,如果这没有多大意义。它让我疯狂。如果您需要更好的解释,我会尽我所能来澄清。

1 个答案:

答案 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];
    }
}
相关问题