134

post_id を postmeta から次のようにフェッチします。

$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

)

どうすればこれを行うことができますか?

4

13 に答える 13

304

最も簡単な方法は、オブジェクトを JSON エンコードしてからデコードして配列に戻すことです。

$array = json_decode(json_encode($object), true);

または、必要に応じて、オブジェクトを手動でトラバースすることもできます。

foreach ($object as $value) 
    $array[] = $value->post_id;
于 2013-10-21T12:55:35.393 に答える
66

非常に簡単です。最初にオブジェクトを json オブジェクトに変換します。これにより、オブジェクトの文字列が JSON の代表に返されます。

その結果を取得し、true の追加パラメーターを使用してデコードし、連想配列に変換します。

$array = json_decode(json_encode($oObject),true);
于 2014-06-19T18:13:06.953 に答える
25

これを試して:

$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;
    }
}
于 2013-10-21T12:54:30.253 に答える
11

stdClass オブジェクトを配列に変換する簡単な方法が 2 つあります。

$array = get_object_vars($obj);

そしてその他は

$array = json_decode(json_encode($obj), true);

または、foreach ループを使用して単純に配列を作成することもできます

$array = array();
foreach($obj as $key){
    $array[] = $key;
}
print_r($array);
于 2020-07-08T13:37:35.890 に答える
7

1 次元配列の場合:

$array = (array)$class; 

多次元配列の場合:

function stdToArray($obj){
  $reaged = (array)$obj;
  foreach($reaged as $key => &$field){
    if(is_object($field))$field = stdToArray($field);
  }
  return $reaged;
}
于 2014-07-06T14:03:51.957 に答える
6

STDクラスのオブジェクトを配列に変換しながら、phpの配列関数を使ってオブジェクトを配列にキャストします。

次のコード スニペットを試してみてください。

/*** cast the object ***/    
foreach($stdArray as $key => $value)
{
    $stdArray[$key] = (array) $value;
}   
/*** show the results ***/  
print_r( $stdArray );
于 2015-02-16T10:03:34.743 に答える
6
$wpdb->get_results("SELECT ...", ARRAY_A);

ARRAY_A は「output_type」引数です。定義済みの 4 つの定数のいずれかになります (デフォルトは 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.  

参照: http://codex.wordpress.org/Class_Reference/wpdb

于 2013-10-21T13:03:51.597 に答える
3

これを試すことができます:

$aInitialArray = array_map(function($oObject){
    $aConverted = get_object_vars($oObject);
    return $aConverted['post_id'];
}, $aInitialArray);
于 2013-10-21T13:02:31.323 に答える