[php] PHP에서 stdClass 객체를 배열로 변환

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

)

어떻게 할 수 있는지 아십니까?



답변

가장 쉬운 방법은 객체를 JSON으로 인코딩 한 다음 다시 배열로 디코딩하는 것입니다.

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

또는 원하는 경우 개체를 수동으로 탐색 할 수도 있습니다.

foreach ($object as $value)
    $array[] = $value->post_id;


답변

매우 간단합니다. 먼저 객체를 json 객체로 바꾸면 객체의 문자열이 JSON 대표로 반환됩니다.

해당 결과를 가져 와서 추가 매개 변수 인 true로 디코딩하면 연관 배열로 변환됩니다.

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


답변

이 시도:

$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;
    }
}


답변

다음과 같이 std 객체를 배열로 변환 할 수 있습니다.

$objectToArray = (array)$object;


답변

1 차원 배열의 경우 :

$array = (array)$class; 

다차원 배열의 경우 :

function stdToArray($obj){
  $reaged = (array)$obj;
  foreach($reaged as $key => &$field){
    if(is_object($field))$field = stdToArray($field);
  }
  return $reaged;
}


답변

$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


답변

STD 클래스 객체를 배열로 변환하는 동안 PHP의 배열 함수를 사용하여 객체를 배열로 캐스팅합니다 .

다음 코드 스 니펫을 사용해보십시오.

/*** cast the object ***/
foreach($stdArray as $key => $value)
{
    $stdArray[$key] = (array) $value;
}
/*** show the results ***/
print_r( $stdArray );