doude1917 2016-04-13 08:34
浏览 21
已采纳

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

I am a newbie with coding and I have problem in figuring out my current problem.

Let me explain my situation first.

In my website, users agree to register with their Facebook account. With that, I am able to retrieve all the permitted data, save it in my database and display it in my website's user profile page. Here, the user default profile information is based on users' Facebook. In that page, user able to edit any of their Facebook information and save it (save into my database but will not change the their information in Facebook's site). My point here is, I have created the retrieve codes for displaying the saved data from the database and I do not wish to change that.

Right now, lets get into it. I have my textarea and I want user able to list out their listings in that textarea. With each line marked as list. I created an for it, so I use explode. So automatically it is set as index array right? Now, I tried to assign/associate each value with one static key so that it will ease my next step (Retrieving them. Why? I have created the default calling for them in the display page).

So here is my textarea:-

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

After user submitted, their input, it will go to my function page:-

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

and the array ofcourse will look like this for example:-

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

I tried to make the array looks like this:-

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

So with that, I can preserve my display callings function which is like this for example:-

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

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

I have tried many method such as using methods such with array_walk, array_merge, array_combine, array_flip, array_fill_keys, array_keys and combination of those. I don't know, maybe for all of those, I used it wrongly. I hope you guys can help me out here. And forgive me for my lack of brain.

  • 写回答

1条回答 默认 最新

  • dosf40815 2016-04-13 08:42
    关注

    You can iterate over the languages and transform each of them into associative arrays like this:

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

    The ampersand before $language passes the variable by reference. This means that when you change $language inside the foreach, the original array value is changed instead of just your newly created $language variable.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    报告相同问题?

    悬赏问题

    • ¥30 android百度地图SDK海量点显示标题
    • ¥15 windows导入environment.yml运行conda env create -f environment_win.yml命令报错
    • ¥15 这段代码可以正常运行,打包后无法执行,在执行for内容之前一直不断弹窗,请修改调整
    • ¥15 C语言判断有向图是否存在环路
    • ¥15 请问4.11到4.18以及4.27和4.29公式的具体推导过程是怎样的呢
    • ¥20 将resnet50中的卷积替换微ODConv动态卷积
    • ¥15 通过文本框输入商品信息点击按钮将商品信息列举出来点击加入购物车商品信息添加到表单中
    • ¥100 这是什么压缩算法?如何解压?
    • ¥20 upload上传实验报错500,如何解决?(操作系统-windows)
    • ¥15 谁知道 ShaderGraph 那个节点可以接入 Particle System -> Custom Data