繁体   English   中英

如何使用多个数组在PHP中执行foreach循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM