这里发生了一些事情。
First, 你得到的是一个多维数组(array of arrays) 其中嵌套数组以列名作为键。原因是您使用ARRAY_A
参数您可以在中阅读有关输出类型的信息the codex entry. 您可以使用默认设置OBJECT
. 我会照你说的回答。
Second, 嵌套数组的值是SQL转义字符串。
This answer 给出了一个很好的解释,解释了为什么结果被转义,并建议stripslashes();
来修复它。
This answer 对于返回字符串而不是整数的原因给出了很好的解释。它建议使用类型转换或PHP函数,但我会使用WordPress函数absint() 确保我有一个非负整数。
所以你可以用这样的方法来达到你想要的结果:
function wpsx_make_item_id_to_int($userGadgets) {
//Init out collection array
$item_id_ints = array();
//Process parent array
foreach ($userGadgets as $key => $array) {
//Process nested arrays
foreach ($array as $column_name => $column_value) {
//$column_value is your item_ids
if (is_string($column_value)) {
//Make ID into int and add it to our colection
$item_id_ints[] = absint(stripslashes($column_value));
}
}
}
//Return an associative array of (int)item_ids
return $item_id_ints;
}
但是,您确定首先需要使用$wpdb吗?我发现,大多数情况下,通过利用内置的WordPress功能和API,您可以实现所需的功能,并获得更轻松和更安全的额外好处。