2011-12-19 8 views
0

すべてのキー= 'Palabra'の文字列を作るために、この配列を暗黙にしたいです。これはどうすればできますか? (出力は次のようになります。 'フアナES')類似のキーのみを結合するImplode配列?

Array 
(
    [0] => Array 
     (
      [Palabra] => juana 
     ) 

    [1] => Array 
     (
      [Palabra] => es 
      [0] => Array 
       (
        [Raiz] => ser 
        [Tipo] => verbo 
        [Tipo2] => verbo1 
       ) 
     ) 
) 
+1

自分で何かをしようとしましたか? – mario

+0

私はforeachを使って回避策を講じていますが、もっと簡単な方法があるかどうかを知りたいのです – lisovaccaro

答えて

1
function foo($needly, $array) { 
    $results = array(); 
    foreach ($array as $key => $value) { 
     if (is_array($value)) { 
      $results = array_merge($results, foo($needly, $value)); 
     } else if ($key == $needly) { 
      $results[] = $value; 
     } 
    } 
    return $results; 
} 
echo implode(" ", foo("Palabra", $your_array)); 
+0

これは 'juana'しか出力しません。 –

+0

@MichaelMiorが修正されました。 –

-1

私は、最も簡単な解決策はarray_walk_recursiveであると思います。

<?php 
$arr = array(
    array(
     'Palabra' => 'juana', 
    ), 
    array(
     'Palabra' => 'es', 
     array(
      'Raiz' => 'ser', 
      'Tipo' => 'verbo', 
      'Tipo2' => 'verbo1', 
     ), 
    ), 
); 

$str = array(); 

array_walk_recursive($arr, function($value, $key) use(&$str) { 
    if ($key == 'Palabra') { 
     $str[] = $value; 
    } 
}); 

$str = implode(' ', $str); 
echo "$str\n"; 

渡される関数は、配列とサブアレイの各キー値ペアに対して呼び出されます。ここでは、配列に一致するキーを持つ任意の値を追加し、配列をimplodeして文字列を取得します。

1

私はよりよい解決策の欠如のためのforeachを使用して終了:

foreach ($array as $key => $palabra) { 
    $newArray[] = $array[$key]["Palabra"]; 
} 

$string = implode(' ', $newArray); 
関連する問題