類似のキーのみを結合するImplode配列?

私はすべてのキー= 'Palabra'で文字列を作るためにこの配列を暗黙にしたい。これはどうすればできますか? (出力は 'juana es'にする必要があります)

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

    [1] => Array
        (
            [Palabra] => es
            [0] => Array
                (
                    [Raiz] => ser
                    [Tipo] => verbo
                    [Tipo2] => verbo1
                 )
        )
)
0
foreachを使って回避策を講じていますが、より簡単な方法があるかどうかを知りたい
追加された 著者 lisovaccaro,
あなた自身で何かを試しましたか?
追加された 著者 mario,

3 答え

私はより良い解決策がないためforeachを使って終了しました:

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

$string = implode(' ', $newArray);
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
追加された
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 ) );
1
追加された
これは juana のみを出力します。
追加された 著者 Michael Mior,
@MichaelMiorが修正されました。
追加された 著者 Eugene Manuilov,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com