我从postmeta获取post_id为:
$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
当我尝试print_r($post_id);
时
我有这样的数组:
Array
(
[0] => stdClass Object
(
[post_id] => 140
)
[1] => stdClass Object
(
[post_id] => 141
)
[2] => stdClass Object
(
[post_id] => 142
)
)
我不知道如何遍历它,我怎么能得到像这样的数组
Array
(
[0] => 140
[1] => 141
[2] => 142
)
任何想法我怎么能这样做.......提前致谢
答案 0 :(得分:201)
最简单的方法是对对象进行JSON编码,然后将其解码回数组:
$array = json_decode(json_encode($object), True);
或者如果您愿意,也可以手动遍历对象:
foreach ($object as $value)
$array[] = $value->post_id;
答案 1 :(得分:54)
非常简单,首先将对象转换为json对象,这会将对象的字符串返回给JSON代表。
获取该结果并使用额外的true参数进行解码,其中它将转换为关联数组
$array = json_decode(json_encode($oObject),true);
答案 2 :(得分:20)
试试这个:
$new_array = objectToArray($yourObject);
function objectToArray($d)
{
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d);
} else {
// Return array
return $d;
}
}
答案 3 :(得分:9)
您可以将std对象转换为数组,如下所示:
$objectToArray = (array)$object;
答案 4 :(得分:6)
将STD类对象转换为array。使用php的 array 函数将对象转换为数组。
尝试使用以下代码段。
/*** cast the object ***/
foreach($stdArray as $key => $value)
{
$stdArray[$key] = (array) $value;
}
/*** show the results ***/
print_r( $stdArray );
答案 5 :(得分:5)
$wpdb->get_results("SELECT ...", ARRAY_A);
ARRAY_A是" output_type"论点。它可以是四个预定义常量之一(默认为OBJECT):
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 columns values as keys (duplicates will be discarded).
ARRAY_A - result will be output as an numerically indexed array of associative arrays, using column names as keys.
ARRAY_N - result will be output as a numerically indexed array of numerically indexed arrays.
答案 6 :(得分:5)
function stdToArray($obj){
$reaged = (array)$obj;
foreach($reaged as $key => &$field){
if(is_object($field))$field = stdToArray($field);
}
return $reaged;
}
答案 7 :(得分:3)
你可以试试这个:
$aInitialArray = array_map(function($oObject){
$aConverted = get_object_vars($oObject);
return $aConverted['post_id'];
}, $aInitialArray);
答案 8 :(得分:3)
有两种简单的方法可以将stdClass对象转换为数组
$array = get_object_vars($obj);
其他是
$array = json_decode(json_encode($obj), true);
或者您可以简单地使用foreach循环创建数组
$array = array();
foreach($obj as $key){
$array[] = $key;
}
print_r($array);
答案 9 :(得分:1)
如果你有数组和数组元素是stdClass项,那么这就是解决方案
`foreach($post_id as $key=>$item){
$post_id[$key]= (array)$item;
}`
现在stdClass已被数组中的数组替换为新数组元素
答案 10 :(得分:1)
使用Std中的ArrayObject或构建自己的
(new \ ArrayObject($ existingStdClass))
您可以在新类上使用build in方法:
getArrayCopy()
或将新对象传递给
iterator_to_array
答案 11 :(得分:1)
让我们假设$ post_id是$ item
的数组if (height > 4.25 || length > 6 || weight > 1) {
if (height > 4.25){...};
if (length > 6){...};
if (weight > 1){...};
}
强文
答案 12 :(得分:0)
我有一个函数myOrderId($_GET['ID']);
,该函数返回多维OBJ。作为字符串。
我的其他1个班轮都没动。
这两者都有效:
$array = (array)json_decode(myOrderId($_GET['ID']), True);
$array = json_decode(json_decode(json_encode(myOrderId($_GET['ID']))), True);