2개의 어레이가 Foreach 루프에 있음
생성하려고 합니다.selectbox
2개의 어레이를 사용합니다.하나는 국가 코드를 포함하고 다른 하나는 국가 이름을 포함합니다.
다음은 예를 제시하겠습니다.
<?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
'programing' 카테고리의 다른 글
여러 체크박스에서 $_POST 가져오기 (0) | 2022.09.19 |
---|---|
GROUP_CONCAT를 사용하여 짝수와 홀수를 분할하는 쿼리 (0) | 2022.09.19 |
datetime 값을 얻으려면 어떻게 해야 합니까?python에서 timezone을 인식하고 있습니까? (0) | 2022.09.19 |
명령줄에서 MySQL 덤프를 다운로드하는 중 (0) | 2022.09.19 |
구성 x = x | y는 무엇을 의미합니까? (0) | 2022.09.19 |