2012-09-20 64 views
0

我有一個函數,我想要生成一個數組。數組的格式是特定的,只有值需要根據我的函數的參數進行更改。這裏的功能:PHP從函數參數生成數組

function generatearray($name1, $field1, $name2, $field2) { 
    $language = ($user->language) ? $user->language : 'und'; 
    $edit = array(
    $name1 => array(
    $language => array(
     0 => array(
     'value' => $field1, 
    ), 
    ), 
    ), // ..... other elements $name2 
); 
    return $edit; 
} 

$ name2和$ field2是可選參數。

+2

什麼問題? –

+0

它可能不會回答你的問題,但是你沒有在任何地方定義'$ user' - 你需要將它作爲參數傳入,或者聲明爲全局。 – andrewsi

+0

感謝您的幫助!我最終將$ user定義爲第5個參數。 –

回答

1

不知道問題是什麼......但是這段代碼將完全按照您想要了解的內容進行......一種基於提供給函數的最多2個名稱/值對構建數組的方法。

printarray(generatearray('name_one','field_one','name_two','field_two')); 

function generatearray($name1, $field1, $name2 = null, $field2 = null) { 
$new_array = array(); 
$language = isset($user->language) ? $user->language : 'und'; 
$new_array[$name1][$language] = $field1; 
if (!is_null($name2) && !is_null($field2)) { 
    $new_array[$name2][$language] = $field2; 
} 
return $new_array; 
} 

function printarray($arr) { 
foreach ($arr as $user_key => $user_value) { 
    echo "User: ".$user_key."<br />"; 
    foreach ($user_value as $language_key=>$language_value) { 
     echo "Language: ".$language_value."<br />"; 
    } 
} 
}