【问题标题】:PHP : How to get unique values between two objectsPHP:如何获取两个对象之间的唯一值
【发布时间】:2012-01-15 20:17:32
【问题描述】:

目标:获取 $resultSecond 中唯一的值

所以我有两个对象。

$result 和 $resultSecond

我想获得 $resultSecond 独有的值,并且在 $result 中NOT

我尝试使用 array_diff()。 它不起作用,因为它们是对象。我想。

下面是我获取数据的代码。

$result = db_query("
SELECT entity_id FROM field_data_field_date
WHERE bundle='postit' AND field_date_value > ".$customvishaltime." ");

$resultSecond = db_query("
SELECT entity_id FROM field_data_field_days
WHERE bundle='postit' AND field_days_value > ".$customvishaltime." ");

根据 drupal,db_query 的返回是一个准备好的语句对象。我不知道这是什么意思。

参考:

对于 db_query http://api.drupal.org/api/drupal/includes--database--database.inc/function/db_query/7

  • 已按要求进行更改。

【问题讨论】:

  • 这两行似乎是难以置信明显的拼写错误:$result->>entity_id,$resultSecond>entity_id,您甚至不能将这些明显的代码错误归因于语言障碍.如果您希望人们花时间回答问题,请至少在您的问题上投入一点时间。
  • 这些不是拼写错误。我以这种方式命名它们。正如您在代码中看到的,它们从不同的表中获取数据。
  • @vishal,@meagar 指的是您发布的代码是语法错误,因为-> 在任何一行都不正确。
  • @mathematical.coffee 我已经做出了改变。那部分不是代码,但我可以看到它是如何被当作代码的。

标签: php drupal drupal-7


【解决方案1】:

您最好将其作为左连接查询:

$result = db_query("SELECT q2.entity_id 
                    FROM (
                           SELECT entity_id FROM field_data_field_days
                           WHERE bundle='postit' AND field_days_value > %f
                          ) AS q2 LEFT JOIN (

                           SELECT entity_id FROM field_data_field_date
                           WHERE bundle='postit' AND field_date_value > %f

                      ) AS q1 ON q2.entity_id = q1.entity_id

                    WHERE q1.entity_id IS NULL", $customvishaltime, $customvishaltime);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2018-06-18
    • 2021-07-27
    • 2023-04-07
    相关资源
    最近更新 更多