首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自POST的PHP协理阵列

来自POST的PHP协理阵列
EN

Stack Overflow用户
提问于 2014-03-20 17:05:53
回答 3查看 129关注 0票数 1

下面的数组是从一些POST数据构建的,我通过print_r抓取了这个数组

代码语言:javascript
复制
print_r($_POST['options']);
Array ( 
    [0] => Array ( 
        ['member_id'] => 6 
        ['leadership_id'] => 0 ) 
    [1] => Array ( 
        ['member_id'] => 7 
        ['leadership_id'] => 1 ) 
    [2] => Array ( 
        ['member_id'] => 2 
        ['leadership_id'] => 2 ) ) 

这在我看来是正确的,但如果我试图从一个角度来看的话:

代码语言:javascript
复制
foreach ($_POST['options'] as $test) {
    echo $test['member_id'];
    echo $test['leadership_id'];
}

这只会让我返回以下错误:

代码语言:javascript
复制
Notice: Undefined index: member_id
Notice: Undefined index: leadership_id

它似乎每次都会发送该错误,因此显然没有正确引用它。

我认为这个过程会使$test循环成为$test,但从它的响应方式来看,这似乎是不正确的。

它的工作原理让我想到尝试另一个循环:

代码语言:javascript
复制
foreach ($_POST['options'] as $tmp) {
    foreach ($tmp AS $opt) {
        echo $opt['member_id'];
        echo $opt['leadership_id'];
    }
}   

我认为第一个前端只看到了一个数组,所以第二个数组找到了其余的数组,尽管当我打印出变量时,它看起来很奇怪:

代码语言:javascript
复制
Member ID: 6
Leadership_ID: 6
Member ID: 0
Leadership_ID: 0
Member ID: 7
Leadership_ID: 7
Member ID: 1
Leadership_ID: 1
Member ID: 2
Leadership_ID: 2
Member ID: 2
Leadership_ID: 2

它说明HTML如何加载数据可能是一个问题,下面是一个示例:

代码语言:javascript
复制
<input type="hidden" name="options[0]['member_id']" value="6">Name
<select name="options[0]['leadership_id']">
    <option value="0">None</option>
    <option value="1">Small Unit</option>
    <option value="2">Large Unit</option>
</select><br />

<input type="hidden" name="options[1]['member_id']" value="7">Pyras
<select name="options[1]['leadership_id']">
    <option value="0">None</option>
    <option value="1">Small Unit</option>
    <option value="2">Large Unit</option>
</select><br />
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-20 17:12:48

你从这段代码得到了什么:

代码语言:javascript
复制
foreach ($_POST['options'] as $test) {
    print_r($test);
}

张贴所有内容。

编辑1:尝试如下:

代码语言:javascript
复制
foreach ($_POST['options'] as $test) {
    if (isset($test['member_id']) && isset($test['leadership_id'])) {
        var_dump($test['member_id']);
        var_dump($test['leadership_id']);
    } else {
        echo 'Bad Values:' . var_dump($test);
    }
}

那你能得到什么?

编辑2:似乎您的键中有额外的‘。你的HTML是什么?如果这不是一种选择,请做:

代码语言:javascript
复制
foreach ($_POST['options'] as $test) {
    if (isset($test["'member_id'"]) && isset($test["'leadership_id'"])) {
        var_dump($test["'member_id'"]);
        var_dump($test["'leadership_id'"]);
    } else {
        echo 'Bad Values:' . var_dump($test);
    }
}

编辑3

将HTML更改为:

代码语言:javascript
复制
<input type="hidden" name="options[0][member_id]" value="6">Name
<select name="options[0][leadership_id]">
    <option value="0">None</option>
    <option value="1">Small Unit</option>
    <option value="2">Large Unit</option>
</select><br />

<input type="hidden" name="options[1][member_id]" value="7">Pyras
<select name="options[1][leadership_id]">
    <option value="0">None</option>
    <option value="1">Small Unit</option>
    <option value="2">Large Unit</option>
</select><br />
票数 1
EN

Stack Overflow用户

发布于 2014-03-20 17:15:23

代码语言:javascript
复制
You need to access it like this:
foreach($options as $key=>$opt){
  echo $opt["member_id"];
  echo $opt["leadership_id"];
}
票数 0
EN

Stack Overflow用户

发布于 2014-03-20 17:17:48

代码工作正常,所以这是另一个问题。

下面是一个有用的示例:http://sandbox.onlinephpfunctions.com/code/cf657dd63428e5199ddd22c643fa464c0657b43f

也许上下文会帮助我们解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22540235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档