0

我们使用 Wordpress 函数 $wpdb->get_results(SQL) 进行了令人讨厌的数据库调用。

在 PHP 中收到结果后,我们需要对结果进行一些更改。

所以谁能告诉我我该怎么做:

1) 从 get_results() 返回的对象中删除特定行。

2) 更改返回对象中特定行中特定列的值。

即如果返回的对象是$nastyData,我们需要:

1) 从 $nastyData 中删除特定行

2) 更改$nastyData 中特定行中特定列的值,例如$nastyData->name 为特定行。

有任何想法吗?

我曾考虑让 get_results() 将数据作为数组返回,但这会在我们代码的其他地方(代码期望接收对象的地方)产生问题。

谢谢,马德斯

4

1 回答 1

3

首先,您的“讨厌的数据库调用”应该被优化为不那么讨厌。更具体地说,只查询你想要的结果,这样你就不必删除后面的东西。这是最好的解决方案。

如果您坚持尝试修改对象,这是一种解决方法。根据文档,返回对象时,它们以两种方式之一返回:

OBJECT - 结果将作为行对象的数字索引数组输出。

OBJECT_K - 结果将作为行对象的关联数组输出,使用第一列的值作为键(重复项将被丢弃)。

因此,知道结果是一个对象数组,我们可以使用一个foreach构造来访问每个单独的实例:

$results = $wpdb->get_results( $nastySQL );

foreach($results as $index => $result)
{
   // Change name column to FirstName using copy and delete
   $tmp = $result->name;
   unset($result->name);
   $result->FirstName = $tmp;

   // Remove specific row
   if( $result->name == "Tom")
   {
      unset($results[$index]);
   }
}
于 2013-04-15T18:42:52.707 回答