从Checkbox进入索引数组,然后从索引数组进入复杂?排列

时间:2016-04-13 08:34:48

标签: php html arrays

我是编码的新手,我在弄清楚当前的问题时遇到了问题。

让我先解释一下我的情况。

在我的网站中,用户同意使用他们的Facebook帐户注册。有了这个,我可以检索所有允许的数据,将其保存在我的数据库中,并将其显示在我的网站的用户个人资料页面中。这里,用户默认配置文件信息基于用户' Facebook的。在该页面中,用户可以编辑他们的任何Facebook信息并保存(保存到我的数据库中,但不会更改他们在Facebook网站上的信息)。我的观点是,我已经创建了用于显示数据库中保存数据的检索代码,我不想改变它。

现在,让我们进入它。我有我的textarea,我希望用户能够在该textarea中列出他们的列表。每行标记为列表。我为它创建了一个,所以我使用了explode。那么自动将它设置为索引数组吧?现在,我尝试使用一个静态键分配/关联每个值,以便它可以简化我的下一步(检索它们。为什么?我在显示页面中为它们创建了默认调用)。

所以这是我的textarea: -

<textarea name="languages" placeholder="Your Language of Expertise... 1 Language per Line">
</textarea>

用户提交后,输入后,将进入我的功能页面: -

$languages = explode("\n", $_POST['languages']);

并且数组的行为将如下所示: -

Array ( 
[0] => Mandarin Chinese
[1] => English 
[2] => French 
[3] => Hokkien 
[4] => Arab
) 

我试图让数组看起来像这样: -

Array ( 
[0] => Array ( [name] => Mandarin Chinese ) 
[1] => Array ( [name] => English ) 
[2] => Array ( [name] => French ) 
[3] => Array ( [name] => Hokkien ) 
[4] => Array ( [name] => Arab ) 
)

因此,我可以保留我的显示调用功能,例如: -

$user_lang = Array ( 
[0] => Array ( [name] => Mandarin Chinese )
[1] => Array ( [name] => English )
)

foreach ($user_lang as $lang){
    echo $lang['name'];
}

我尝试了很多方法,例如使用array_walkarray_mergearray_combinearray_fliparray_fill_keysarray_keys和这些组合。我不知道,也许对于所有这些,我错误地使用了它。我希望你们能在这里帮助我。原谅我缺乏大脑。

1 个答案:

答案 0 :(得分:2)

您可以迭代语言并将每个语言转换为关联数组,如下所示:

foreach ($languages as &$language) {
    $language = [
        'name' => $language
    ];
}

$language之前的&符号通过引用传递变量。这意味着当您在foreach中更改$language时,会更改原始数组值,而不仅仅是新创建的$language变量。