2012-12-14 104 views
-1

在發言中,我有這樣的如果PHP多維數組

$output .= '<div>'; 
$output .= sprintf('<input type="text" name="%s"/>', $field['input_name']); 
$output .= '</div>'; 
return $output; 

一個PHP代碼,這些輸入字段可以重複。所以$field['input_name'] is a multidimensional array

所以它看起來像這樣

name[first_name][1][1] 

如果我重複那場它看起來像這樣

name[first_name][2][1] 

我想如果名稱字段看起來像name[username][][]

顯示一個按鈕

我試過這樣。但它不工作。

if ($field['input_name'] == 'name[username][][]') { 
    $output .= '<input type="submit" value="Testing">'; 
} 

有人能給我正確的語法嗎?

感謝

+0

你需要實現一個'foreach()'循環。水木清華。像'name [username] [] []'是無效的php代碼。 – mate64

+0

是的,但我怎麼能實現foreach循環,而不知道它是什麼價值? – user1091558

回答

1

你需要實現一個foreach()循環或功能,可搜索出您陣列。在這種情況下,你最好的朋友是RecursiveIteratorIterator

function searchArrayValueByKey(array $array, $needle) { 

    foreach (new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $key => $value) { 
     if ($key === $needle) 
     return $value; 
    } 
    return false; 
} 

實現(例如):

if (searchArrayValueByKey($name['username'], $field['input_name']) { 
    $output .= '<input type="submit" value="Testing">'; 
} 

如果與大數據陣列處理,這種解決方案可能很慢。

+0

繼這個問題後,閱讀這個答案讓我想知道它是如何回答這個問題的。不是葉的關鍵,但根的關鍵是測試什麼(如果我已經閱讀了正確的問題)。 – hakre