PHP:使用标签名称获取元素的索引 [英] PHP: Get index of element with Tag Name

查看:87
本文介绍了PHP:使用标签名称获取元素的索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图获得一个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


如果你想一次轻松地得到段落的所有值,你可以使用

  array_column ($ _POST ['items'],'paragraph'); 

将会列印:

  array(size = 3)
0 =>字符串'test'(长度= 4)
1 =>字符串'test 3'(长度= 6)
2 =>字符串'test 4'(长度= 6)


I'm trying to get the index of an HTML element and pass this to a PHP variable to eventually upload to a database.

<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

    }
}

Looking at this Stack Overflow answer, I'm guessing I should do something like:

$divs = $dom->getElementsByTagName('div');

However, instead of getting all the <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?

Some clarification: The form is dynamic. So it could look like this, too:

<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>

解决方案

You could use a base array to hold all your items such as the below 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

Then when you access $_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)

You can get all the information held in this array easily using the below loop:

foreach($_POST['items'] as $index => $item) {
  echo "Index is: " . $index;
  echo "Key is: " . key($item);
  echo "Value is: " . $item[key($item)];
}

Which will print:

Index is: 0
Key is: paragraph
Value is: test

Index is: 1
Key is: something_else
Value is: test 2

etc.

If you want to get all values for paragraph in one easy swoop you can use array_column to access these, for example the below:

array_column($_POST['items'], 'paragraph');

Will print:

array (size=3)
  0 => string 'test' (length=4)
  1 => string 'test 3' (length=6)
  2 => string 'test 4' (length=6)

这篇关于PHP:使用标签名称获取元素的索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆