ফোরচ লুপে দুটি অ্যারে


100

আমি selectboxদুটি অ্যারে ব্যবহার করে একটি উত্পন্ন করতে চাই , একটিতে দেশের কোড এবং অন্যটি দেশের নাম সম্বলিত।

এটি একটি উদাহরণ:

<?php
    $codes = array('tn','us','fr');
    $names = array('Tunisia','United States','France');

    foreach( $codes as $code and $names as $name ) {
        echo '<option value="' . $code . '">' . $name . '</option>';
    }
?>

এই পদ্ধতিটি আমার পক্ষে কার্যকর হয়নি। কোনও পরামর্শ?

উত্তর:


156
foreach( $codes as $code and $names as $name ) { }

এটি বৈধ নয়।

আপনি সম্ভবত এরকম কিছু চান ...

foreach( $codes as $index => $code ) {
   echo '<option value="' . $code . '">' . $names[$index] . '</option>';
}

বিকল্পভাবে, কোডগুলি আপনার $namesঅ্যারের কী তৈরি করা আরও সহজ হবে ...

$names = array(
   'tn' => 'Tunisia',
   'us' => 'United States',
   ...
);

ফর্ম ফিল্ড অ্যারে পার্সিংয়ে দরকারী।
রিউ_হায়াবুসা

85

foreach একবারে মাত্র একটি অ্যারেতে কাজ করে।

আপনার অ্যারেটি যেভাবে কাঠামোগত করা হয়েছে, আপনি array_combine()সেগুলি কী-মান সংযোজনগুলির একটি অ্যারেতে করতে পারেন তারপরে foreachসেই একক অ্যারে:

foreach (array_combine($codes, $names) as $code => $name) {
    echo '<option value="' . $code . '">' . $name . '</option>';
}

বা অন্যান্য উত্তরে যেমন দেখা যায়, আপনি পরিবর্তে কোনও এসোসিয়েটিভ অ্যারে হার্ডকোড করতে পারেন।


এটি কি তিন অ্যারে ব্যবহার করা যেতে পারে?
xjshiya

@ এক্সজিয়া না, আপনি যদি তাদের 3 টি প্যারামিটার দেন তবে আপনি সতর্কতা পাবেন: অ্যারে_কোম্বাইন () ঠিক 2 টি প্যারামিটার প্রত্যাশা করেছে, 3 দেওয়া হয়েছে
জুলিয়ান

26

array_combine()অ্যারে একসাথে ফিউজ করতে এবং ফলাফলটি পুনরাবৃত্তি করতে ব্যবহার করুন ।

$countries = array_combine($codes, $names);

6

একটি সহযোগী অ্যারে ব্যবহার করুন:

$code_names = array(
                    'tn' => 'Tunisia',
                    'us' => 'United States',
                    'fr' => 'France');

foreach($code_names as $code => $name) {
   //...
}

আমি বিশ্বাস করি যে কোনও এসোসিয়েটিভ অ্যারে ব্যবহার করা হ'ল ব্যবহারের বিপরীতে সবচেয়ে বুদ্ধিমান পদ্ধতির array_combine()কারণ কারণ একবার আপনার যদি কোনও এসোসিয়েটিভ অ্যারে হয়ে যায়, আপনি কেবল ব্যবহার করতে পারেন array_keys()বা array_values()ঠিক আগের মতো একই অ্যারে পেতে পারেন ।


+1 array_combine()ইতিমধ্যে একটি সহযোগী অ্যারে উত্পাদন করে, আপনি এটি সাহসী হিসাবে আরম্ভ করার বিষয়ে আরও পরিষ্কার হতে চাইতে পারেন ।
বোল্টক্লক

4

অ্যারে_ম্যাপ এর পক্ষেও ভাল মনে হচ্ছে

$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');

array_map(function ($code, $name) {
    echo '<option value="' . $code . '">' . $name . '</option>';
}, $codes, $names);

অন্যান্য সুবিধা হ'ল:

  • যদি একটি অ্যারের অপরের চেয়ে সংক্ষিপ্ত nullহয় তবে শূন্যস্থান পূরণ করার জন্য কলব্যাক মান গ্রহণ করে।

  • আপনি পুনরাবৃত্তি করতে 2 টিরও বেশি অ্যারে ব্যবহার করতে পারেন।


3

কেন কেবলমাত্র একটি বহুমাত্রিক সংঘবদ্ধ অ্যারেতে সংহত করা হয় না ? দেখে মনে হচ্ছে আপনি এই ভুলটি নিয়ে যাচ্ছেন:

$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');

হয়ে:

$dropdown = array('tn' => 'Tunisia', 'us' => 'United States', 'fr' => 'France');

4
এটিকে একটি বহুমাত্রিক অ্যারে নয়, একটি সহযোগী অ্যারে বলা হয়।
BoltClock

3

foreach শুধুমাত্র একটি একক অ্যারে দিয়ে কাজ করে। একাধিক অ্যারে পদক্ষেপ নিতে, প্রতিটি () ফাংশনটি কিছুক্ষণ লুপে ব্যবহার করা ভাল:

while(($code = each($codes)) && ($name = each($names))) {
    echo '<option value="' . $code['value'] . '">' . $name['value'] . '</option>';
}

প্রতিটি () অ্যারের বর্তমান কী এবং মান সম্পর্কে তথ্য দেয় এবং অভ্যন্তরীণ পয়েন্টারটিকে এক এক করে বাড়িয়ে দেয় বা অ্যারের শেষে পৌঁছে গেলে মিথ্যা ফিরিয়ে দেয়। এই কোডটি দুটি অ্যারে অভিন্ন কী থাকা বা একই ধরণের উপাদানগুলির উপর নির্ভর করবে না। দুটি অ্যারেগুলির মধ্যে একটির কাজ শেষ হলে লুপটি সমাপ্ত হয়।


3

এটি আমার পক্ষে কাজ করেছে:

$codes = array('tn', 'us', 'fr');
$names = array('Tunisia', 'United States', 'France');
foreach($codes as $key => $value) {
    echo "Code is: " . $codes[$key] . " - " . "and Name: " . $names[$key] . "<br>";
}

2

আপনি দুটি অ্যারে একত্রিত করতে অ্যারে_সার ব্যবহার করতে পারেন এবং তারপরে পুনরাবৃত্তি করতে পারেন।

$array1 = array("foo" => "bar");
$array2 = array("hello" => "world");
$both_arrays = array_merge((array)$array1, (array)$array2);
print_r($both_arrays);

2

সমস্ত সম্পূর্ণ পরীক্ষিত

অ্যারে থেকে গতিশীল ড্রপডাউন তৈরির 3 টি উপায়।

এটি একটি অ্যারে থেকে একটি ড্রপডাউন মেনু তৈরি করবে এবং স্বয়ংক্রিয়ভাবে তার সম্পর্কিত মান নির্ধারণ করবে।

পদ্ধতি # 1 (সাধারণ অ্যারে)

<?php

$names = array('tn'=>'Tunisia','us'=>'United States','fr'=>'France');

echo '<select name="countries">';

foreach($names AS $let=>$word){
    echo '<option value="'.$let.'">'.$word.'</option>';
}
echo '</select>';
 
?>


পদ্ধতি # 2 (সাধারণ অ্যারে)

<select name="countries">

<?php

$countries = array('tn'=> "Tunisia", "us"=>'United States',"fr"=>'France');
foreach($countries as $select=>$country_name){
echo '<option value="' . $select . '">' . $country_name . '</option>';
}
?>

</select>


পদ্ধতি # 3 (সহযোগী অ্যারে)

<?php

$my_array = array(
     'tn' => 'Tunisia',
     'us' => 'United States',
     'fr' => 'France'
);

echo '<select name="countries">';
echo '<option value="none">Select...</option>';
foreach ($my_array as $k => $v) {
    echo '<option value="' . $k . '">' . $v . '</option>';
}
echo '</select>';
?>

4
এইচএম ... ডাউনভোট জন্য কলম্বিত ডাউনভোটার, যুক্তি এবং বিশদ বিবরণ যত্ন? স্পষ্টতই "জাস্ট কিউজ" সম্পন্ন হয়েছে। মেহ ~
ফানকি চল্লিশ নিনার

4
এই সব কি একই জিনিস না? ভেরিয়েবলের নাম ব্যতীত অন্য কোনও উল্লেখযোগ্য পার্থক্য আমি দেখতে পাচ্ছি না।
প্যাট্রিক

2

এটা খোঁজার দরকার আছে...

$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
  • পিএইচপি 5.3+

    array_walk($codes, function ($code,$key) use ($names) { 
        echo '<option value="' . $code . '">' . $names[$key] . '</option>';
    });
    
  • পিএইচপি এর আগে 5.3

    array_walk($codes, function ($code,$key,$names){ 
        echo '<option value="' . $code . '">' . $names[$key] . '</option>';
    },$names);
    
  • বা একত্রিত

    array_walk(array_combine($codes,$names), function ($name,$code){ 
        echo '<option value="' . $code . '">' . $name . '</option>';
    })
    
  • নির্বাচন করুন

    array_walk(array_combine($codes,$names), function ($name,$code){ 
        @$opts = '<option value="' . $code . '">' . $name . '</option>';
    })
    echo "<select>$opts</select>";
    

ডেমো


2
<?php

$codes = array ('tn','us','fr');
$names = array ('Tunisia','United States','France');

echo '<table>';

foreach(array_keys($codes) as $i) {

     echo '<tr><td>';
     echo ($i + 1);
     echo '</td><td>';
     echo $codes[$i];
     echo '</td><td>';
     echo $names[$i];
     echo '</td></tr>';
}

echo '</table>';

?>

2

ফোরচ লুপের পরিবর্তে, এটি চেষ্টা করুন (কেবলমাত্র যখন আপনার অ্যারেগুলির দৈর্ঘ্য একই থাকে)।

$number = COUNT($_POST["codes "]);//count how many arrays available
if($number > 0)  
{  
  for($i=0; $i<$number; $i++)//loop thru each arrays
  {
    $codes =$_POST['codes'][$i];
    $names =$_POST['names'][$i];
    //ur code in here
  }
}

1

আমি মনে করি আপনি যেমন কিছু করতে পারেন:

$ কোডগুলি = অ্যারে ('tn', 'আমাদের', 'ফ্র');

$ নামগুলি = অ্যারে ('তিউনিসিয়া', 'মার্কিন যুক্তরাষ্ট্র', 'ফ্রান্স');

foreach ($codes as $key => $code) {
    echo '<option value="' . $code . '">' . $names[$key] . '</option>';
}

এটি সহযোগী অ্যারেগুলির জন্যও কাজ করা উচিত।


1

আমি মনে করি সহজ উপায়টি কেবল লুপের জন্য এইভাবে ব্যবহার করা:

$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');

for($i = 0; $i < sizeof($codes); $i++){
    echo '<option value="' . $codes[$i] . '">' . $names[$i] . '</option>';
}

1

এই জাতীয় কোডটি কেবলমাত্র একক অ্যারে হিসাবে পূর্বাভাস হিসাবে ভুল:

<?php
        $codes = array('tn','us','fr');
        $names = array('Tunisia','United States','France');

        foreach( $codes as $code and $names as $name ) {
            echo '<option value="' . $code . '">' . $name . '</option>';
            }
?>

বিকল্প, এটিতে পরিবর্তন করুন:

<?php
        $codes = array('tn','us','fr');
        $names = array('Tunisia','United States','France');
        $count = 0;

        foreach($codes as $code) {
             echo '<option value="' . $code . '">' . $names[count] . '</option>';
             $count++;
        }

?>

0

array_combine()$_POSTশপিং কার্টে পণ্যগুলির পরিমাণ আপডেট করার প্রয়াসে একাধিক ফর্ম ইনপুট থেকে একাধিক মান একত্রিত করার সময় আমার পক্ষে দুর্দান্ত কাজ করেছে ।


0
if(isset($_POST['doors'])=== true){
$doors = $_POST['doors'];
}else{$doors = 0;}

if(isset($_POST['windows'])=== true){
$windows = $_POST['windows'];
}else{$windows = 0;}

foreach($doors as $a => $b){

এখন আপনি প্রতিটি অ্যারের জন্য $ a ব্যবহার করতে পারেন ....

$doors[$a]
$windows[$a]
....
}

0

আমি আপনার মত একটি সমস্যা এভাবে সমাধান করেছি:

foreach(array_keys($idarr) as $i) {
 echo "Student ID: ".$idarr[$i]."<br />";
 echo "Present: ".$presentarr[$i]."<br />";
 echo "Reason: ".$reasonarr[$i]."<br />";
 echo "Mark: ".$markarr[$i]."<br />";
}

0

সিঙ্গলার ফোরচ লুপে 2 অ্যারে লাগানোর জন্য আপনার এটি চেষ্টা করা উচিত ধরুন আমার কাছে 2 টি অ্যারে রয়েছে 1. আইটেম_এনএম ২ $ আইটেম_কিটি

 `<?php $i=1; ?>
<table><tr><td>Sr.No</td> <td>item_nm</td>  <td>item_qty</td>    </tr>

  @foreach (array_combine($item_nm, $item_qty) as $item_nm => $item_qty)
<tr> 
        <td> $i++  </td>
        <td>  $item_nm  </td>
        <td> $item_qty  </td>
   </tr></table>

@endforeach `

0

কয়েকটি অ্যারে এছাড়াও এর পুনরাবৃত্তি করা যেতে পারে:

foreach($array1 as $key=>$val){ // Loop though one array
    $val2 = $array2[$key]; // Get the values from the other arrays
    $val3 = $array3[$key];
    $result[] = array( //Save result in third array
      'id' => $val,
      'quant' => $val2,
      'name' => $val3,
    );
  }

-2

এটা আমার জন্য কাজ করে

$counter = 0;
foreach($codes as $code)
{
$codes_array[$counter]=$code;
$counter++;
}
$counter = 0;
foreach($names as $name)
{
echo $codes_array[$counter]."and".$name;
$counter++;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.