我正在学习如何在PHP中使用多维数组,我需要帮助输出值。
我得到的错误是:警告:第35行C中非法字符串偏移'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>
问题就在这里:
$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'];
$_POST['name']
被分配给$test
和$_SESSION['images'][]
的整数索引,所以当你循环时,'name'
不作为键存在。
尝试以下操作:
$test['name'] = $_POST['name'];
$test['qty'] = $_POST['qty'];
你为什么要做两个foreach
?第一个将循环遍历会话图像,这是一个包含测试数组的数组。第二个循环遍历测试数组。此时,您已经在$test['name']
变量中,因此您正在有效地调用$_SESSION['images'][0]['name']['name']
:
尝试以下操作:
foreach ($_SESSION['images'] as $image) {
echo $image['name'];
}