2017-11-05 18 views
0

複数のオブジェクトを1つの配列に変換しようとすると、残念ながら配列内の結果が返されます。PHP複数のオブジェクトを1つの配列に変換する

I変換したいオブジェクト:

array(2) { 
    [0]=> 
    object(stdClass)#104 (1) { 
    ["name"]=> 
    string(4) "Paul" 
    } 
    [1]=> 
    object(stdClass)#105 (1) { 
    ["name"]=> 
    string(5) "Jenna" 
    } 
} 

マイPHP:

for ($i=0; $i < count($readers) ; $i++) { 
    $json = json_encode($readers[$i]); // 1   

    $data = json_decode($json, TRUE);  // 2  

    $arr = array(); 
    array_push($arr, $data);    // 3 
} 

出力:

// 1 
{"name":"Paul"}{"name":"Jenna"} 

-

// 2 
Array 
(
    [name] => Paul 
) 
Array 
(
    [name] => Jenna 
) 

-

// 3 
Array 
(
    [0] => Array 
     (
      [name] => Paul 
     ) 

) 
Array 
(
    [0] => Array 
     (
      [name] => Jenna 
     ) 

) 

望ましい結果

私はすべてが1つの配列にマージしたいと思います。キーはインデックスであり、値は名前です。オブジェクトの配列($arr)を介して

Array 
(
    [0] => Paul 
    [1] => Jenna 
) 

答えて

1

ループと$val->string値と最終的な配列($finArr)をコンパイル。これを試してください:

$finArr = array(); 
foreach ($arr as $key => $val) { 
    $finArr[] = $val->string; 
} 
1

また、キーも配列から抽出する必要があります。そして、もう一つの方法は、あなたは、単にあなたは、単に、読者の配列を反復各リーダーの名前を引き出し、そして彼らのそれぞれを追加することができますarray_column()

$arr = array_column($readers,"name"); 
print_r($arr); 
1

を使用することができますです$arr = array()外のforeach

$arr = array(); 
for ($i=0; $i < count($readers) ; $i++) { 
    $data = $readers[$i]->name;   //change this line 
    array_push($arr, $data);    // 3 
} 

print_r($arr); 

を宣言名前は数値で配列された配列に変換します。

$names = array(); // Initialize. 

foreach($readers as $reader) { 
    if (!empty($reader->name)) { 
     $names[] = $reader->name; 
    } 
} 

print_r($names); // To see what you've got. 

Array 
(
    [0] => Paul 
    [1] => Jenna 
)