簡體   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