内爆阵列只加入类似的密钥?

时间:2011-12-19 06:49:05

标签: php arrays

我想破坏这个数组来创建一个包含所有键='Palabra'的字符串。如何才能做到这一点? (输出应该是:'juana es')

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

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

由于缺乏更好的解决方案,我最终使用了foreach:

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

$string = implode(' ', $newArray);

答案 2 :(得分:-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";

为数组中的每个键值对和任何子数组调用传入的函数。在这里,我们将任何带有匹配键的值附加到数组中,然后内插数组以获取字符串。