PHP:使用标签名称获取元素的索引 [英] PHP: Get index of element with Tag Name
问题描述
我试图获得一个HTML元素的索引,并将其传递给一个PHP变量,最终上传到数据库中。
< form method =postaction =insert.phpenctype =multipart / form-data>
....
< div>< textarea name =paragraph []>< / textarea>< / div> // index 0
< div>< textarea name =paragraph []>< / textarea>< / div> // index 1
< div>< textarea name =paragraph []>< / textarea>< / div> // index 2
....
< / form>
if(isset($ _ POST ['paragraph'])){
foreach($ _POST ['paragraph'] as $ paragraph){
//获取本段的容器div的索引并将其存储在一个变量中
$ b code>
查看堆栈溢出答案,我猜我应该做点什么如:
$ divs = $ dom-> getElementsByTagName('div');
然而,并非所有< div>
元素并将它们存储在一个数组中,有没有什么办法可以从 foreach 中获取当前的
< div>
循环并将其索引存储在变量中?
一些说明:表单是动态的。所以它也可能看起来像这样:
< form>
< div>< textarea name =paragraph []>< / textarea>< / div> // index 0
< div>< textarea name =something_else>< / textarea>< / div> index 1
< div>< textarea name =paragraph []>< / textarea>< / div> // index 2
< div>< textarea name =paragraph []>< / textarea>< / div> // index 3
< / form>
您可以使用基本数组来保存所有项目如下面的HTML:
< div>< textarea name =items [] [paragraph]><<< ; / textarea的>< / DIV> // index 0
< div>< textarea name =items [] [something_else]>< / textarea>< / div> index 1
< div>< textarea name =items [] [paragraph]>< / textarea>< / div> // index 2
< div>< textarea name =items [] [paragraph]>< / textarea>< / div> // index 3
然后当您访问 $ _ POST ['items']
$ p $
array(size = 1)
'items'=>
array(size = 4)
0 =>
array(size = 1)
'paragraph'=>字符串'test'(长度= 4)
1 =>
array(size = 1)
'something_else'=>字符串'test 2'(长度= 6)
2 =>
array(size = 1)
'paragraph'=>字符串'test 3'(长度= 6)
3 =>
array(size = 1)
'paragraph'=>字符串'test 4'(长度= 6)
您可以轻松获得该数组中所有的信息使用下面的循环:
foreach($ _ POST ['items'] as $ index => $ item){
echo索引是:。 $指数;
回显密钥是:。键($项目);
echoValue is:。 $项目[键($项目)];
}
这将打印:
索引是:0
键是:段落
值是:test
索引是:1
键是:something_else
值为:test 2
等
如果你想一次轻松地得到 将会列印: I'm trying to get the index of an HTML element and pass this to a PHP variable to eventually upload to a database. Looking at this Stack Overflow answer, I'm guessing I should do something like: However, instead of getting all the Some clarification: The form is dynamic. So it could look like this, too:
You could use a base array to hold all your items such as the below HTML: Then when you access You can get all the information held in this array easily using the below loop: Which will print: If you want to get all values for Will print:
这篇关于PHP:使用标签名称获取元素的索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!段落
的所有值,你可以使用
array_column ($ _POST ['items'],'paragraph');
array(size = 3)
0 =>字符串'test'(长度= 4)
1 =>字符串'test 3'(长度= 6)
2 =>字符串'test 4'(长度= 6)
<form method="post" action="insert.php" enctype="multipart/form-data">
....
<div><textarea name="paragraph[]"></textarea></div> //index 0
<div><textarea name="paragraph[]"></textarea></div> //index 1
<div><textarea name="paragraph[]"></textarea></div> //index 2
....
</form>
if(isset($_POST['paragraph'])) {
foreach ( $_POST['paragraph'] as $paragraph){
//get index of container div for this paragraph and store it in a variable
}
}
$divs = $dom->getElementsByTagName('div');
<div>
elements and storing them in an array, is there any way I can get the current <div>
element from within the foreach
loop and store its index in a variable?<form>
<div><textarea name="paragraph[]"></textarea></div> //index 0
<div><textarea name="something_else"></textarea></div> index 1
<div><textarea name="paragraph[]"></textarea></div> //index 2
<div><textarea name="paragraph[]"></textarea></div> //index 3
</form>
<div><textarea name="items[][paragraph]"></textarea></div> //index 0
<div><textarea name="items[][something_else]"></textarea></div> index 1
<div><textarea name="items[][paragraph]"></textarea></div> //index 2
<div><textarea name="items[][paragraph]"></textarea></div> //index 3
$_POST['items']
you will have them listed with their indexes:array (size=1)
'items' =>
array (size=4)
0 =>
array (size=1)
'paragraph' => string 'test' (length=4)
1 =>
array (size=1)
'something_else' => string 'test 2' (length=6)
2 =>
array (size=1)
'paragraph' => string 'test 3' (length=6)
3 =>
array (size=1)
'paragraph' => string 'test 4' (length=6)
foreach($_POST['items'] as $index => $item) {
echo "Index is: " . $index;
echo "Key is: " . key($item);
echo "Value is: " . $item[key($item)];
}
Index is: 0
Key is: paragraph
Value is: test
Index is: 1
Key is: something_else
Value is: test 2
etc.
paragraph
in one easy swoop you can use array_column to access these, for example the below:array_column($_POST['items'], 'paragraph');
array (size=3)
0 => string 'test' (length=4)
1 => string 'test 3' (length=6)
2 => string 'test 4' (length=6)