首页 > 解决方案 > 爆炸,数组和每个问题

问题描述

我对以下代码有一些问题;我有一个选择,可以选择多个选项,然后以列表格式输入到数据库中,然后当我需要交叉引用时将它们转换为数组,如果它们被选中以获得帮助我已经包含了var_dump两者$countryList$DBcountries区域我有问题是

foreach ($DBcountries as $country)此 foreach 语句似乎无法正常工作。

检查下面的$countryList$DBcountries; 谢谢。

我遇到的问题是,目前它没有选择存储在数据库中的所有选定选项。

<?php
        
        $countryList = file('/var/www/vhosts/example.co.uk/httpdocs/user/tools/countries.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
                
        $options = '';

        $DBcountries = $fetch['locations'];
        $DBcountries = explode(', ', $DBcountries);
                    
        foreach ($countryList as $country) {

        foreach ($DBcountries as $cross){
            
            if($cross == $country){
                $selected = 'selected';
            }else{
                $selected = '';
            }
            
        }

        if($DBcountries == 'All'){
            $all = 'selected'; 
        }               
            $options .= '<option value="'.$country.'" ' . $selected . '>'.$country.'</option>';
        }
        
        $select = '<select class="form-select" oninput="locationOutputUpdate(value)" id="country" name="location" multiple aria-label="multiple select example"><option ' . $all . ' >All</option>'.$options.'</select>';

        echo $select;
        
        ?>

的转储$DBcountries

array(2) {
  [0]=>
  string(11) "Afghanistan"
  [1]=>
  string(7) "Albania"
}

的转储$countryList

array(196) {
  [0]=>
  string(11) "Afghanistan"
  [1]=>
  string(7) "Albania"
  [2]=>
  string(7) "Algeria"
  [3]=>
  string(7) "Andorra"
  [4]=>
  string(6) "Angola"
  [5]=>
  string(14) "Antigua & Deps"
  [6]=>
  string(9) "Argentina"
  [7]=>
  string(7) "Armenia"
  [8]=>
  string(9) "Australia"
  [9]=>
  string(7) "Austria"
  [10]=>
  string(10) "Azerbaijan"
  [11]=>
  string(7) "Bahamas"
  [12]=>
  string(7) "Bahrain"
  [13]=>
  string(10) "Bangladesh"
  [14]=>
  string(8) "Barbados"
  [15]=>
  string(7) "Belarus"
  [16]=>
  string(7) "Belgium"
  [17]=>
  string(6) "Belize"
  [18]=>
  string(5) "Benin"
  [19]=>
  string(6) "Bhutan"
  [20]=>
  string(7) "Bolivia"
  [21]=>
  string(18) "Bosnia Herzegovina"
  [22]=>
  string(8) "Botswana"
  [23]=>
  string(6) "Brazil"
  [24]=>
  string(6) "Brunei"
  [25]=>
  string(8) "Bulgaria"
  [26]=>
  string(7) "Burkina"
  [27]=>
  string(7) "Burundi"
  [28]=>
  string(8) "Cambodia"
  [29]=>
  string(8) "Cameroon"
  [30]=>
  string(6) "Canada"
  [31]=>
  string(10) "Cape Verde"
  [32]=>
  string(19) "Central African Rep"
  [33]=>
  string(4) "Chad"
  [34]=>
  string(5) "Chile"
  [35]=>
  string(5) "China"
  [36]=>
  string(8) "Colombia"
  [37]=>
  string(7) "Comoros"
  [38]=>
  string(5) "Congo"
  [39]=>
  string(22) "Congo {Democratic Rep}"
  [40]=>
  string(10) "Costa Rica"
  [41]=>
  string(7) "Croatia"
  [42]=>
  string(4) "Cuba"
  [43]=>
  string(6) "Cyprus"
  [44]=>
  string(14) "Czech Republic"
  [45]=>
  string(7) "Denmark"
  [46]=>
  string(8) "Djibouti"
  [47]=>
  string(8) "Dominica"
  [48]=>
  string(18) "Dominican Republic"
  [49]=>
  string(10) "East Timor"
  [50]=>
  string(7) "Ecuador"
  [51]=>
  string(5) "Egypt"
  [52]=>
  string(11) "El Salvador"
  [53]=>
  string(17) "Equatorial Guinea"
  [54]=>
  string(7) "Eritrea"
  [55]=>
  string(7) "Estonia"
  [56]=>
  string(8) "Ethiopia"
  [57]=>
  string(4) "Fiji"
  [58]=>
  string(7) "Finland"
  [59]=>
  string(6) "France"
  [60]=>
  string(5) "Gabon"
  [61]=>
  string(6) "Gambia"
  [62]=>
  string(7) "Georgia"
  [63]=>
  string(7) "Germany"
  [64]=>
  string(5) "Ghana"
  [65]=>
  string(6) "Greece"
  [66]=>
  string(7) "Grenada"
  [67]=>
  string(9) "Guatemala"
  [68]=>
  string(6) "Guinea"
  [69]=>
  string(13) "Guinea-Bissau"
  [70]=>
  string(6) "Guyana"
  [71]=>
  string(5) "Haiti"
  [72]=>
  string(8) "Honduras"
  [73]=>
  string(7) "Hungary"
  [74]=>
  string(7) "Iceland"
  [75]=>
  string(5) "India"
  [76]=>
  string(9) "Indonesia"
  [77]=>
  string(4) "Iran"
  [78]=>
  string(4) "Iraq"
  [79]=>
  string(18) "Ireland {Republic}"
  [80]=>
  string(6) "Israel"
  [81]=>
  string(5) "Italy"
  [82]=>
  string(11) "Ivory Coast"
  [83]=>
  string(7) "Jamaica"
  [84]=>
  string(5) "Japan"
  [85]=>
  string(6) "Jordan"
  [86]=>
  string(10) "Kazakhstan"
  [87]=>
  string(5) "Kenya"
  [88]=>
  string(8) "Kiribati"
  [89]=>
  string(11) "Korea North"
  [90]=>
  string(11) "Korea South"
  [91]=>
  string(6) "Kosovo"
  [92]=>
  string(6) "Kuwait"
  [93]=>
  string(10) "Kyrgyzstan"
  [94]=>
  string(4) "Laos"
  [95]=>
  string(6) "Latvia"
  [96]=>
  string(7) "Lebanon"
  [97]=>
  string(7) "Lesotho"
  [98]=>
  string(7) "Liberia"
  [99]=>
  string(5) "Libya"
  [100]=>
  string(13) "Liechtenstein"
  [101]=>
  string(9) "Lithuania"
  [102]=>
  string(10) "Luxembourg"
  [103]=>
  string(9) "Macedonia"
  [104]=>
  string(10) "Madagascar"
  [105]=>
  string(6) "Malawi"
  [106]=>
  string(8) "Malaysia"
  [107]=>
  string(8) "Maldives"
  [108]=>
  string(4) "Mali"
  [109]=>
  string(5) "Malta"
  [110]=>
  string(16) "Marshall Islands"
  [111]=>
  string(10) "Mauritania"
  [112]=>
  string(9) "Mauritius"
  [113]=>
  string(6) "Mexico"
  [114]=>
  string(10) "Micronesia"
  [115]=>
  string(7) "Moldova"
  [116]=>
  string(6) "Monaco"
  [117]=>
  string(8) "Mongolia"
  [118]=>
  string(10) "Montenegro"
  [119]=>
  string(7) "Morocco"
  [120]=>
  string(10) "Mozambique"
  [121]=>
  string(16) "Myanmar, {Burma}"
  [122]=>
  string(7) "Namibia"
  [123]=>
  string(5) "Nauru"
  [124]=>
  string(5) "Nepal"
  [125]=>
  string(11) "Netherlands"
  [126]=>
  string(11) "New Zealand"
  [127]=>
  string(9) "Nicaragua"
  [128]=>
  string(5) "Niger"
  [129]=>
  string(7) "Nigeria"
  [130]=>
  string(6) "Norway"
  [131]=>
  string(4) "Oman"
  [132]=>
  string(8) "Pakistan"
  [133]=>
  string(5) "Palau"
  [134]=>
  string(6) "Panama"
  [135]=>
  string(16) "Papua New Guinea"
  [136]=>
  string(8) "Paraguay"
  [137]=>
  string(4) "Peru"
  [138]=>
  string(11) "Philippines"
  [139]=>
  string(6) "Poland"
  [140]=>
  string(8) "Portugal"
  [141]=>
  string(5) "Qatar"
  [142]=>
  string(7) "Romania"
  [143]=>
  string(18) "Russian Federation"
  [144]=>
  string(6) "Rwanda"
  [145]=>
  string(16) "St Kitts & Nevis"
  [146]=>
  string(8) "St Lucia"
  [147]=>
  string(30) "Saint Vincent & the Grenadines"
  [148]=>
  string(5) "Samoa"
  [149]=>
  string(10) "San Marino"
  [150]=>
  string(19) "Sao Tome & Principe"
  [151]=>
  string(12) "Saudi Arabia"
  [152]=>
  string(7) "Senegal"
  [153]=>
  string(6) "Serbia"
  [154]=>
  string(10) "Seychelles"
  [155]=>
  string(12) "Sierra Leone"
  [156]=>
  string(9) "Singapore"
  [157]=>
  string(8) "Slovakia"
  [158]=>
  string(8) "Slovenia"
  [159]=>
  string(15) "Solomon Islands"
  [160]=>
  string(7) "Somalia"
  [161]=>
  string(12) "South Africa"
  [162]=>
  string(11) "South Sudan"
  [163]=>
  string(5) "Spain"
  [164]=>
  string(9) "Sri Lanka"
  [165]=>
  string(5) "Sudan"
  [166]=>
  string(8) "Suriname"
  [167]=>
  string(9) "Swaziland"
  [168]=>
  string(6) "Sweden"
  [169]=>
  string(11) "Switzerland"
  [170]=>
  string(5) "Syria"
  [171]=>
  string(6) "Taiwan"
  [172]=>
  string(10) "Tajikistan"
  [173]=>
  string(8) "Tanzania"
  [174]=>
  string(8) "Thailand"
  [175]=>
  string(4) "Togo"
  [176]=>
  string(5) "Tonga"
  [177]=>
  string(17) "Trinidad & Tobago"
  [178]=>
  string(7) "Tunisia"
  [179]=>
  string(6) "Turkey"
  [180]=>
  string(12) "Turkmenistan"
  [181]=>
  string(6) "Tuvalu"
  [182]=>
  string(6) "Uganda"
  [183]=>
  string(7) "Ukraine"
  [184]=>
  string(20) "United Arab Emirates"
  [185]=>
  string(14) "United Kingdom"
  [186]=>
  string(13) "United States"
  [187]=>
  string(7) "Uruguay"
  [188]=>
  string(10) "Uzbekistan"
  [189]=>
  string(7) "Vanuatu"
  [190]=>
  string(12) "Vatican City"
  [191]=>
  string(9) "Venezuela"
  [192]=>
  string(7) "Vietnam"
  [193]=>
  string(5) "Yemen"
  [194]=>
  string(6) "Zambia"
  [195]=>
  string(8) "Zimbabwe"
}

标签: phparrays

解决方案


尝试替换此位:

    foreach ($DBcountries as $cross){
        
        if($cross == $country){
            $selected = 'selected';
        }else{
            $selected = '';
        }
        
    }

这样:

    foreach ($DBcountries as $cross){
        
        $selected = '';
        if($cross == $country) {
            $selected = 'selected';
        }

    }

这样就应该选择所有国家。原因是即使你设置了一个国家,selected你也会在循环的下一次迭代中再次覆盖它。

更有效的是:

    foreach ($DBcountries as $cross){
        
        $selected = '';
        if($cross == $country) {
            $selected = 'selected';
            break;
        }

    }

找到国家后跳出循环。但更短的是:

    $selected = in_array($country, $DBcountries) ? 'selected' : '';

是的,这就是替换该循环所需的全部内容。


推荐阅读