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.

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

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵