Php 数组将字符串与图像关联

Php 数组将字符串与图像关联,php,Php,根据这个代码,我应该将国旗与相关国家关联起来 // ID String // 1 Italy, USA, Germany // 2 Italy, USA // 3 Italy // 4 Italy, United Kingdom $sql = "SELECT country FROM film where film_id = 4"; $result = $conn-

根据这个代码,我应该将国旗与相关国家关联起来

//  ID            String
//   1            Italy, USA, Germany
//   2            Italy, USA
//   3            Italy
//   4            Italy, United Kingdom

$sql = "SELECT country  FROM film where film_id = 4";
$result = $conn->query($sql);
while ($row = $result->fetch_array()) {

    $str = $row['country'];
    $group1 = array("Italy"=>"it.png","Russia"=>"ru.png","USA"=>"us.png",
    "France"=>"fr.png","United Kingdom"=>"uk.png","Sweden"=>"se.png",
    "Denmark"=>"dk.png","Germany"=>"de.png","Poland"=>"pl.png",
    "Japan"=>"jp.png");


    $count_words = str_word_count($str);
    switch ($count_words){
        case 1:
            list($uno) = explode(',', $str);
            foreach ($group1 as $string){
                if (strpos($uno, $string)!==false){
                }
                $primo = $uno . ' <img src="img/separate/'.$string.'">';
             }
                echo $primo;
            break;
        case 2:
            list($uno, $due) = explode(',', $str);
            foreach ($group1 as $string) {
                if (strpos($uno, $string)!==false){
                }
                if (strpos($due, $string)!==false){
                }
                $primo = $uno . ' <img src="img/separate/'.$string.'">';
                $secondo = $due . ' <img src="img/separate/'.$string.'">';
            }
                echo $primo . ', ' . $secondo;
            break;
        case 3:
             list($uno, $due, $tre) = explode(',', $str);
             foreach ($group1 as $string) {
                if (strpos($uno, $string)!==false){
                }
                if (strpos($due, $string)!==false){
                }
                if (strpos($tre, $string)!==false){
                }
            $primo = $uno . ' <img src="img/separate/'.$string.'">';
            $secondo = $due . ' <img src="img/separate/'.$string.'">';
            $terzo = $tre . ' <img src="img/separate/'.$string.'">';
            }
            echo $primo.', '.$secondo.', '.$terzo;
            break;
        default:
            echo 'no match';
    }
//ID字符串
//1意大利、美国、德国
//2意大利、美国
//3意大利
//4意大利、联合王国
$sql=“从电影中选择电影id=4的国家”;
$result=$conn->query($sql);
而($row=$result->fetch_array()){
$str=$row['country'];
$group1=数组(“意大利”=>“it.png”、“俄罗斯”=>“ru.png”、“美国”=>“us.png”,
“法国”=>“fr.png”、“英国”=>“uk.png”、“瑞典”=>“se.png”,
“丹麦”=>“dk.png”、“德国”=>“de.png”、“波兰”=>“pl.png”,
“日本”=>“jp.png”);
$count\u words=str\u word\u count($str);
开关($count\u字){
案例1:
列表($uno)=分解(',',$str);
foreach($group1作为$string){
if(strpos($uno,$string)!==false){
}
$primo=$uno';
}
echo$primo;
打破
案例2:
列表($uno,$due)=分解(',',$str);
foreach($group1作为$string){
if(strpos($uno,$string)!==false){
}
if(strpos($due,$string)!==false){
}
$primo=$uno';
$secondo=$due';
}
echo$primo.,'.$secondo;
打破
案例3:
列表($uno,$due,$tre)=分解(',',$str);
foreach($group1作为$string){
if(strpos($uno,$string)!==false){
}
if(strpos($due,$string)!==false){
}
if(strpos($tre,$string)!==false){
}
$primo=$uno';
$secondo=$due';
$terzo=$tre';
}
echo$primo.,'.$secondo.,'.$terzo;
打破
违约:
回声“不匹配”;
}
数据取自“国家”列,为了进行测试,数据采用以下格式: -意大利 -意大利、美国 -意大利、美国、德国 -意大利、联合王国

有两个问题: 字符串显示正确,但标志始终为日语(jp.png) 在测试过程中,我注意到如果我把相应的ID放在:意大利,英国 将显示两个字符串加上第三个标志(不带字符串)和错误: 注意:C:xampp htdocs online js_php.php 148中未定义的偏移量:2 第148行:列表($1,$2,$tre)=分解(',',$str)

我不认为原因是这条线,而是“联合”和“王国”之间的空白 由于意大利、美国(2个字符串)显示无误

请,我需要帮助关联正确的标志和
解决导致错误的问题

这里不应该有一个ELSE吗:
if(strpos($uno,$string)!==false){}if(strpos($due,$string)!==false){}$primo=$uno.';$secondo=$due.';
更大的问题似乎是,您在数据库中以逗号分隔的字符串形式存储数组。使用桥接表,将国家作为一个表,电影作为另一个表。然后,您可以只引用每部电影的所有国家ID(在桥接表中),您不必担心
explode()
strpos()
。谢谢你的回答-朱尼奥:即使我把其他东西放在那里,如果没有任何变化。@Obsidia Age:我按照你说的做了,事实上它更简单,但通过上面的代码,我避免添加表,我认为第一个问题是数组,第二个问题是“爆炸”中的“delimeter”,但我无法解决更新:将“United Kindom”更改为“United Kindom”错误消失edSOLVED…..案例1:list($uno)=explode(',',$str);if(isset($group1[$uno]){$primo=$uno.';}