简体   繁体   English

HTML元素数组-多维

[英]HTML Element Arrays - Multidimensional

I'm not 100% sure of the correct terminology of what I'm even asking, but I currently have a form that is being posted that has an array of elements: 我不确定要问的是正确的术语,但我目前正在发布带有包含一系列元素的表单:

<form>
  <input type="text" name="album_songs[0][title]" value="Let It Go" />
  <input type="text" name="album_songs[0][writer]" value="Robert Lopez, Kristen Anderson-Lopez" />
  <input type="text" name="album_songs[0][composer]" value="Frozen" />
  <input type="text" name="album_songs[0][length]" value="3:44" />
  <input type="text" name="album_songs[0][genre]" value="Soundtrack, Music, Animated" />
  <input type="text" name="album_songs[0][songorder]" value="5" />

  <input type="text" name="album_songs[1][title]" value="Love Is An Open Door" />
  <input type="text" name="album_songs[1][writer]" value="Robert Lopez" />
  <input type="text" name="album_songs[1][composer]" value="Frozen" />
  <input type="text" name="album_songs[1][length]" value="2:07" />
  <input type="text" name="album_songs[1][genre]" value="Soundtrack, Music, Animated" />
  <input type="text" name="album_songs[1][songorder]" value="4" />
</form>

And in my code, I can access these elements like the following: 在我的代码中,我可以像下面这样访问这些元素:

$songs = $_POST["album_songs"];

foreach($songs as $song) {
    $title = $song["title"];
    $writer = $song["writer"]; // turn into array??
    $composer = $song["composer"];
    $length = $song["length"];
    $genre = $song["genre"]; // turn into array??
    $songorder = $song["songorder"];
}

What I would like to have happen, is not only have an array of songs, but also an array of Writers and Genres. 我想发生的不仅是一堆歌曲,而且还有一系列作家和流派。 Is this even possible? 这有可能吗? I tried mocking up something like the following but it did not work: 我尝试模拟以下内容,但没有成功:

<input type="text" name="album_songs[4][genre[0]]" value="Soundtrack" />
<input type="text" name="album_songs[4][genre[1]]" value="Music" />
<input type="text" name="album_songs[4][genre[2]]" value="Animated" />

Any suggestions or is it even possible? 有什么建议吗,甚至可能吗?

I might consider a dropdown, but you almost had it: 我可能会考虑一个下拉列表,但您几乎可以做到:

<input type="text" name="album_songs[4][genre][]" value="Soundtrack" />
<input type="text" name="album_songs[4][genre][]" value="Music" />
<input type="text" name="album_songs[4][genre][]" value="Animated" />

Gives this: 给出以下内容:

Array
(
    [4] => Array
        (
            [genre] => Array
                (
                    [0] => Soundtrack
                    [1] => Music
                    [2] => Animated
                )
        )
)

Try to use square bracket syntax to convert your form inputs into an array. 尝试使用方括号语法将表单输入转换为数组。

IE : IE浏览器:

<input type="text" name="album_songs_title[]" value="Title1" />
<input type="text" name="album_songs_title[]" value="Title2" />

Then, you will be able to browse your datas with a foreach(). 然后,您将可以使用foreach()浏览数据。 I think it might work. 我认为这可能有效。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM