2011-12-19 59 views
0

我想爆這個數組來創建一個所有鍵='Palabra'的字符串。如何才能做到這一點? (輸出應該是: '胡安娜ES')Implode數組只加入類似的密鑰?

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

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

你嘗試在自己的東西嗎? – mario 2011-12-19 06:55:11

+0

我有一個foreach解決方法,但我想知道是否有一個更簡單的方法 – lisovaccaro 2011-12-19 06:58:55

回答

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'。 – 2011-12-19 07:53:46

+0

@MichaelMior修復了,它現在可以工作。 – 2011-12-19 08:45:36

-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"; 

傳入的函數被調用,用於數組和任何子陣列中的每個鍵 - 值對。在這裏,我們將任何具有匹配鍵的值附加到數組,然後使數組爆炸以獲取字符串。

1

我最後使用foreach缺乏一個更好的解決方案:

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

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