【问题标题】:Output values from a multidimension array in PHP从 PHP 中的多维数组输出值
【发布时间】:2015-10-06 08:17:21
【问题描述】:

我正在学习如何在 PHP 中使用多维数组,我需要帮助来输出这些值。

我得到的错误是:

警告:C 中第 35 行的非法字符串偏移 'name'。

我想输出这样的值:

name     quantity  
church   1

这是我的代码:

<?php

session_start();

if (!isset($_SESSION['images'])) {

   $_SESSION['images'] = array();
}

if (isset($_POST['submit'])) {

$test[]= $_POST['name'];
$test[]= $_POST['qty'];

 $_SESSION['images'][] = $test; 

}

  foreach ($_SESSION['images'] as $nom) {

      foreach ($nom as $val) {
        echo $val["name"];
      }
  }
?>

<!DOCTYPE HTML>
<html>

 <head>
<title>Test Array</title>
    </head>


<body>


  <div id="holder">

<p>You have <?php echo count($_SESSION['images']);?> images</p>

   <div class="test">

<div><img src="images/church.jpg"></div>

<br>
 <form action="multidimention_array.php" method="post">

<input type="hidden" name="name" id="name" value="church">

<input type="text" name="qty" id="qty" size="1" value="1">

<input type="submit" name="submit" id="submit" value="Send Value">
    </form>

      </div>

     <div class="test">

<div><img src="images/stellar.jpg"></div>

<br>
 <form action="multidimention_array.php" method="post">

<input type="hidden" name="name" id="name" value="stellar">

<input type="text" name="qty" id="qty" size="1" value="1">

<input type="submit" name="submit" id="submit" value="Send Value">
    </form>

      </div> 
</div>
   </body>
</html>

【问题讨论】:

  • 您遇到什么错误/为什么您自己的代码不能正常工作?
  • WOW 人们很快就会否决这个问题。为什么不就这个问题的不足发表评论,而不是跳到前面的否决按钮? ...
  • @Epodax:这是我得到的错误:警告:非法字符串偏移 'name'
  • 如果您想避免投票,请阅读How to Askminimal reproducible example。最重要的是,您并没有通过描述代码的实际行为(即输出、错误消息等)来说明问题所在。
  • 通过单击edit 将错误消息添加到您的问题中,并包括它所在的行。

标签: php loops multidimensional-array output


【解决方案1】:

问题出在这里:

$test[]= $_POST['name'];

这并不意味着从$_POST 中获取键name 的值并将其保存在$test 中的同一键下。这意味着从$_POST 获取键name 的值并将其保存在第一个空闲的键下。实际上,这意味着它将以密钥 0 结尾(假设 $test 开始时为空)。所以不会有 $test['name'],因此没有$_SESSION['images']['name']$val['name'];

你需要使用的代码是这样的:

$test['name'] = $_POST['name'];
$test['qty'] = $_POST['qty'];

【讨论】:

    【解决方案2】:

    $_POST['name'] 被分配给$test 中的一个整数索引,然后是$_SESSION['images'][],因此循环时'name' 不作为键存在。

    尝试以下方法:

    $test['name'] = $_POST['name'];
    $test['qty']  = $_POST['qty'];
    

    更新

    你为什么要做两个foreachs?第一个将遍历会话图像,这是一个包含您的测试数组的数组。第二个循环通过您的测试数组。此时,您已经在$test['name'] 变量中,因此您实际上是在调用$_SESSION['images'][0]['name']['name']

    尝试以下方法:

    foreach ($_SESSION['images'] as $image) {
      echo $image['name'];
    }
    

    【讨论】:

    • 我按照你的解释做了,但我收到了这个错误:警告:非法字符串偏移 'name'...我该如何解决?
    • @AfrikDevelopeur 哪一行?
    • 错误是:Warning: Illegal string offset 'name' in C on line 24
    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2013-07-16
    • 2021-02-19
    • 1970-01-01
    • 2021-12-06
    • 2015-01-05
    • 2020-08-08
    相关资源
    最近更新 更多