programing

2개의 어레이가 Foreach 루프에 있음

luckcodes 2022. 9. 19. 22:07

2개의 어레이가 Foreach 루프에 있음

생성하려고 합니다.selectbox2개의 어레이를 사용합니다.하나는 국가 코드를 포함하고 다른 하나는 국가 이름을 포함합니다.

다음은 예를 제시하겠습니다.

<?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>';
    }
?>

이 방법은 나에게 효과가 없었다.좋은 의견이라도 있나?

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',
   ...
);

foreach는 한번에1개의 어레이에서만 동작합니다.

어레이의 구조화에서는, 다음과 같은 작업을 실시할 수 있습니다.array_combine()키와 값의 쌍의 배열로 변환합니다.foreach단일 어레이:

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

또는 다른 답변에서 보듯이 관련 어레이를 하드코드할 수 있습니다.

배열을 서로 융합하고 결과에 대해 반복하는 데 사용합니다.

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

array_map은 이 경우에도 적합할 것 같습니다.

$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값을 입력합니다.

  • 3개 이상의 어레이를 사용하여 반복할 수 있습니다.

연관 배열 사용:

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

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

나는 연관 배열을 사용하는 것이 사용하는 것보다 가장 합리적인 접근법이라고 생각한다.array_combine()일단 어소시에이션 어레이를 갖게 되면, 간단하게array_keys()또는array_values()이전과 똑같은 어레이를 얻을 수 있습니다.

이 방법은 효과가 있었습니다.

$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>";
}

다음과 같은 코드는 단일 어레이에 대해서만 Forech로 올바르지 않습니다.

<?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++;
        }

?>

다차원 어소시에이션 어레이로 통합하면 어떨까요?당신은 이것에 대해 잘못 생각하고 있는 것 같습니다.

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

다음과 같이 됩니다.

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

array_merge를 사용하여 2개의 어레이를 조합한 후 그 위에 반복할 수 있습니다.

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

모두 테스트 완료

어레이에서 다이내믹 드롭다운을 작성하는 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>';
?>

걸어 나가라...

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

    array_walk($codes, function ($code,$key) use ($names) { 
        echo '<option value="' . $code . '">' . $names[$key] . '</option>';
    });
    
  • PHP 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>";
    

데모

<?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>';

?>

foreach는 단일 어레이에서만 작동합니다.여러 어레이를 단계별로 진행하려면 while loop에서 each() 함수를 사용하는 것이 좋습니다.

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

각()은 배열의 현재 키와 값에 대한 정보를 반환하고 내부 포인터를 1씩 늘리거나 배열 끝에 도달한 경우 false를 반환합니다.이 코드는, 키가 같거나 같은 종류의 요소가 있는 2개의 어레이에 의존하지 않습니다.2개의 어레이 중 하나가 종료되면 루프가 종료됩니다.

foreach 루프 대신 이 방법을 사용해 보십시오(배열의 길이가 같은 경우에만).

$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
  }
}

array_combine()$_POST쇼핑 카트의 제품 수량을 업데이트하기 위해 여러 양식 입력에서 여러 값을 얻습니다.

다음과 같은 작업을 수행할 수 있습니다.

$syslog = array atn', us', fr';

$names = array("Tunisia", "미국", "프랑스");

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

또, 어소시에이트 어레이에서도 동작합니다.

가장 간단한 방법은 for 루프를 다음과 같이 사용하는 것이라고 생각합니다.

$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>';
}
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]
....
}

나는 다음과 같은 방법으로 당신과 같은 문제를 해결했다.

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 />";
}

2개의 어레이를 singlr foreach loop에 배치하는 경우 어레이 1이 2개 있다고 가정할 때 이 방법을 사용해야 합니다.$item_nm 2.$item_qty

 `<?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 `

이와 같이 반복할 수 있는 어레이는 거의 없습니다.

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,
    );
  }

이것은, 양쪽 어레이의 카운트가 같은 경우에만 동작합니다.mysql db에 두 어레이를 모두 삽입하기 위해 larabel로 시도합니다.

="", 2": $answer= {"0":0", 1":1", 2":0", 3":0", 4":1";
= $reason_id = {"0":17", 1":19", 2":15", 3":19", 4:18"};

        $k= (array)json_decode($answer);
        $x =(array)json_decode($reason_id);
        $number = COUNT(json_decode($reason_id, true));
        if($number > 0)  
        {  
        for($i=0; $i<$number; $i++)
        {
            $val = new ModelName();
            $val->reason_id  = $x[$i];
            $val->answer  =$k[$i];
            $val->save();
        }
        }

나에겐 효과가 있어

$counter = 0;
foreach($codes as $code)
{
$codes_array[$counter]=$code;
$counter++;
}
$counter = 0;
foreach($names as $name)
{
echo $codes_array[$counter]."and".$name;
$counter++;
}

언급URL : https://stackoverflow.com/questions/4480803/two-arrays-in-foreach-loop