【问题标题】:Can't access elements of a php array无法访问 php 数组的元素
【发布时间】:2015-01-30 14:41:44
【问题描述】:

我真的把头发扯掉了,我想知道是否有人能看出我做错了什么。我有一个填写数组“排练”的表格。到现在为止还挺好。如果我按下提交后,我恢复了排练的值,我可以得到变量的 print_r,但变量本身没有内容所以:

$rhearsal = $_POST['rehearsal'];
foreach($rhearsal as $row) {
    print_r($row);
    echo "<br>plan:" . $row->plan . "<br><br>";
}

给出输出:

Array ( 
    [Name] => A***** M***** 
    [Rehearsal_no] => 1 
    [Rehearsal] => Spring15-150106-1900 
    [plan] => Yes 
    [actual] => Yes 
) 
plan:

换句话说,当我使用 print_r 打印它时,该变量存在于 $row 中,但是当我尝试使用 $row-&gt;plan 访问它时,它具有一个空值。

我以前用变量做过很多次,但没有用输入表单。如果有任何帮助,输入表单的格式为:&lt;input type='hidden' name='rehearsal[$counter][Name]' value='$usern'&gt;其中$counter 是一个递增计数器。

任何人都有任何想法 - 我已经浪费了一天的时间来解决这个问题 - 以不同的方式输入和重新输入。谢谢:)

【问题讨论】:

  • $row['plan'] 因为$rowarray,而不是对象
  • 您不得使用:error_reporting(E_ALL); ini_set('display_errors', '1');

标签: php arrays forms


【解决方案1】:

将您的代码更改为:

$rhearsal = $_POST['rehearsal'];
foreach($rhearsal as $row) {
    print_r($row);
    echo "<br>plan:" . $row['plan'] . "<br><br>";
}

更重要的是,这一点:

$row['plan'];

由于$row 是一个数组,因此您可以这样获取它。

使用-&gt;抓取对象。

【讨论】:

  • 太棒了——谢谢。只是去表明它是值得的。我仍然不确定数组和对象之间的区别是什么,但我会做一些进一步的研究。 :)
  • @Mishutka 如果此答案对您有所帮助,请按答案框左侧的勾号将其标记为已回答!
【解决方案2】:

如果您更喜欢使用对象表示法访问$row 中的值,那么您可以将$row 转换为对象:

$rhearsal = $_POST['rehearsal'];
foreach($rhearsal as $row) {
    print_r($row);           // here $row is an array()
    $row = (object)$row;
    print_r($row);           // and now it's an object (stdClass)
    echo "<br>plan:" . $row->plan . "<br><br>";        // this works as expected
}

【讨论】:

    猜你喜欢
    • 2021-05-13
    • 2016-08-08
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2019-08-11
    • 2020-08-12
    • 1970-01-01
    相关资源
    最近更新 更多