进去的foreach当前阵列关键(Get the current array key inside

2019-08-04 00:55发布

好了,所以,我建立的东西我的雇主为他们输入的产品,他们有非常具体的要求。 我有像这样动态生成字段的表单...(显然不是确切的代码遵循但实例是相同的概念)

<input type="text" name="attribute[20]"> inputted value = height
<input type="text" name="attribute[27]"> inputted value = width

数是基于在数据库中的东西产生的,所以20将关联到“宽度” 27将关联到“高度”例如。

因此,一旦用户输入的值,我需要这些值进入数据库...或在测试中,呼应了。

foreach ($_POST['attribute'] as $attributes){
echo key($attributes).' '.$attributes.'<br>';
}

所以这应该输出...

20高度值
27宽度值

而是它输出

高度值
宽度值

到底是怎么回事? 我有类似的东西......但作为定义数字略有不同可以有多个输入....它完美的作品。

<input type="text" name="option[][20]"> inputted value = option 1
<input type="text" name="option[][20]"> inputted value = option 2
<input type="text" name="option[][27]"> inputted value = option 1

foreach ($_POST['option'] as $options){
echo key($options).' ';
foreach ($options as $option){
echo $option.'<br>';
}

其输出完美...

20选1
20选2
27选1

我不明白为什么更复杂的一个工作和简单的一个没有,我失去了一些东西明显? 我知道我在比较了一些编码的有点不正规的方法,但它是个什么笑。 任何帮助将不胜感激。

编辑:VAR转储的要求

阵列(22){[ “PID”=>串(12) “测试产品”[ “pPrice”] =>串(0) “”[ “PNAME”] =>串(0) “”[ “PRRP” ] =>串(0) “”[ “pPostSize”] =>串(0) “”[ “pOurPrice”] =>串(0) “”[ “pEstDelivery”] =>串(0) “”[” pWeight “] =>串(0) ”“[” PEAN “] =>串(0) ”“[” pOrder “] =>串(0) ”“[” pStock“] =>串(0) ”“ [ “pManufacturer”] =>串(0) “”[ “PTYPE”] =>串(13) “淋浴阀”[ “PRANGE”] =>串(0) “”[ “猫”] =>数组( 2){[0] =>串(2) “72”[1] =>串(2) “23”} [ “属性”] =>阵列(2){[0] =>串(5)“ 宽度 “[1] =>串(6) ”高度“} [”选项“] =>阵列(3){[0] =>数组(1){[11] =>串(6)” works1“} [1] =>数组(1){[10] =>串(6) “works1”} [2] =>数组(1){[10] =>串(6) “Works2的 ”}} [“pLongdescription “] =>串(0) ”“[” meta_description “] =>串(0) ”“[” meta_keyword “] =>串(0) ”“[” meta_title“] =>串(0) ”“[ “行动”] =>串(6) “创建”}

大胆的部分,是在我的第二个例子中成功走出来的零件。 但粗斜体,你可以看到,返回0,而不是20,实际上是在窗体名称值。

Answer 1:

<input type="text" name="attribute[20]"> inputted value = height
<input type="text" name="attribute[27]"> inputted value = width

foreach ($_POST['attribute'] as $attributes){
    echo key($attributes).' '.$attributes.'<br>';
}

这里注意,你是在循环后的属性阵列上。 $属性是每个字段中的值(并因此不是阵列。

而不是使用的key()尝试:

foreach ($_POST['attribute'] as $attributeKey => $attributes){
    echo $attributeKey.' '.$attributes.'<br>';
}


Answer 2:

按照PHP 键()的文档 :

键()函数简单地返回,因此目前正由内部指针指向的数组元素的键。 它不以任何方式移动指针。 如果超出了元素列表或阵列的端部的内部指针指向是空的, 键()返回NULL。

的文件(和示例)显示,需要提供实际的数组作为参数,在这里所使用的值。

因此,使用这样的事情:

$yourArray = $_POST['attribute'];
foreach ($yourArray as $attributes){
  echo key($yourArray).' '.$attributes.'<br>';
}

即使你发现都知道,你有一个“相比,一些编码的有点不正规方法”,这将是更好的使用foreach -loop这样:

foreach ($_POST['attribute'] as $attributeKey => $attributes){
    echo $attributeKey.' '.$attributes.'<br>';
}

作为key()方法似乎有点“不可靠”我(取决于内部指针)。

退房的foreach文档查找有关此使用的详细信息。



Answer 3:

好了,所以,我有固定的,用你们的帮助,我已经有点笨,只有编辑表单的静态部分,将动态密钥,而不是阿贾克斯产生它会覆盖一部分的实现。

foreach ($_POST['attribute'] as $key => $attributes){
echo $key.'+'.$attributes.'<br>';
}

完美的作品。 谢谢提醒伙计。



文章来源: Get the current array key inside foreach