[英]How to do a foreach loop in php with multiple array
我的表单中有3个文本区域,用于收集姓名,年龄和地点,并在提交表单后回显输出。
我面临的问题:
例如,如果我输入如下数据
名称 :
George
Tom
年龄:
30
40
地点:
SA
IN
我期望输出像:
My name is George, age 30, from SA
My name is Tom, age 40, from IN
但是它给了我输出:
My name is George, age 30, from SA
My name is George, age 30, from IN
My name is George, age 40, from SA
My name is George, age 40, from IN
My name is Tom, age 30, from SA
My name is Tom, age 30, from IN
My name is Tom, age 40, from SA
My name is Tom, age 40, from IN
如何处理每个文本区域中的每个行数据并提供输出?
我的代码: PHP FIDDLE
<form id="main" name="main" action="#text" method="post" >
<div class="input">Name<span><textarea class="textarea" id="main-name" name="main-name" type="text"></textarea></span> </div>
<div class="input">Age<span><textarea class="textarea" id="main-age" name="main-age" type="text"></textarea></span> </div>
<div class="input">Place<span><textarea class="textarea" id="main-place" name="main-place" type="text"></textarea></span> </div>
<div class="submit-clear">
<input id="generate" type="submit" name="script" value="create my symcli script" />
<input onClick="clear_all();" id="clear" type="submit" name="clear" value="clear" />
</div>
</form>
<div id="output-main">
<form id="main2" name="main2" action="#text" method="post">
<textarea onclick="this.select()" name="output_textarea" id="output_textarea" cols="100" rows="25" readonly value=" ">
<?php
$names1 = $_POST['main-name'];
$ages1 = $_POST['main-age'];
$places1 = $_POST['main-place'];
$names = explode("\n", $names1);
$ages = explode("\n", $ages1);
$places = explode("\n", $places1);
foreach ($names as $key => $name) {
foreach ($ages as $key => $age) {
foreach ($places as $key => $place) {
$name = trim($name);
$age = trim($age);
$place = trim($place);
echo "My name is $name, age $age, from $place".PHP_EOL;
}}}
?>
</textarea>
</form>
</div>
foreach是错误的循环结构。 您实际上所做的只是回显所有可能的条目组合。
使用简单的for循环,以便每个条目仅处理一次,而不是2 ^(entries-1)次(=>每个可能的组合)。
$names = explode("\n", $_POST['main-name']);
$ages = explode("\n", $_POST['main-age']);
$places = explode("\n", $_POST['main-place']);
$entries = min(count($names), count($ages), count($places))
for ($i = 0; $i < $entries; $i++) {
$name = trim($names[$i]);
$age = trim($ages[$i]);
$place = trim($places[$i]);
echo "My name is $name, age $age, from $place".PHP_EOL;
}
如果您具有相同的姓名,年龄和地点价值计数。 你可以试试看
foreach ($names as $key => $name) {
$name = trim($name);
$age = trim($ages[$key]);
$place = trim($places[$key]);
echo "My name is $name, age $age, from $place".PHP_EOL;
}
否则,您需要像这样将数组关联为array [0] ['name'],array [0] ['age'],array [0] ['place']。 这将是理想的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.