我们使用 Wordpress 函数 $wpdb->get_results(SQL) 进行了一次令人讨厌的数据库调用。
收到 PHP 的结果后,我们需要对结果进行一些更改。
谁能告诉我该怎么做:
1) 从 get_results() 返回的对象中删除特定行。
2)更改返回对象中特定行特定列的值。
即如果返回的对象是 $nastyData,我们需要:
1) 从 $nastyData 中删除特定行
2) 更改 $nastyData 中特定行中特定列的值,例如特定行的 $nastyData->name。
有什么想法吗?
我曾考虑过让 get_results() 以数组形式返回数据,但这会在代码中的其他位置(代码期望接收对象的位置)产生问题。
谢谢, 麦兹
最佳答案
首先,您的“讨厌的数据库调用”应该进行优化,使其不那么讨厌。更具体地说,只查询您想要的结果,这样您就不必删除后面的内容。这是最好的解决方案。
如果您坚持尝试修改对象,这是一个解决方法。根据the documentation ,当返回对象时,它们以两种方式之一返回:
OBJECT - result will be output as a numerically indexed array of row objects.
OBJECT_K - result will be output as an associative array of row objects, using first column's values as keys (duplicates will be discarded).
因此,知道结果是一个对象数组,我们可以使用 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]);
}
}
关于php - 编辑 $wpdb->get_results(SQL) 返回的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16021954/