【问题标题】:PHP Loop only brings out the last value from it in jsPHP Loop 只在 js 中取出它的最后一个值
【发布时间】:2020-01-10 06:56:42
【问题描述】:

我的值 $viena_salis 仅在有 6 个其他国家并且所有国家都获得相同的“访问“英国”的计划时才带出最后一个值(在这种情况下是英国)?我尝试将 var contentString 移动到循环中的其他位置,希望结果发生变化,但似乎没有任何效果。此代码在谷歌地图上放置标记,其中包含每个国家/地区注册人数的数字,并且应根据用户角色的类型放置不同的颜色标记(仍在处理彩色标记部分)。

$indivitualios_salys 是一个国家名称数组。

$google maps 是一个包含所有世界国家坐标的数组。

我不知道它有什么问题,在我看来它应该只是循环 js 并回显国家名称,因为if($viena_salis==$gm_salis[0]) 可以正常工作。

如果有人对我做错了什么有任何想法,我们将不胜感激。

P.s 我还是 php 和 js 的新手。

<?php $i=0;
        foreach ($indivitualios_salys as $viena_salis) {
            $i++;
            foreach ($Google_maps as $gm_salis) {
                if ($viena_salis==$gm_salis[0]) {
                    ?>
                    var contentString = '<div id="content" >'+
                            '<div id= "siteNotice">'+
                            '</div>'+
                              '<div id="bodyContent">'+
                              '<p>Plan on visisting "<?php echo $viena_salis; ?>"?</p>'+
                              '<p>Check out our <a href="https://biz4good.co/about/">welcome guide</a> </p>'+
                              '</div>'+
                              '</div>';
                    var infowindow = new google.maps.InfoWindow({
                        content: contentString});

                    var <?php echo 'marker'.$i; ?> = new google.maps.Marker({
                      position: {lat: <?= $gm_salis[1]; ?>, lng: <?= $gm_salis[2]; ?>},
                      map: map,
                      icon: <?php 

                foreach ($remeju_id as $con_id){
                  foreach ($country_user_id as $user_id_country) {
                    if($con_id==$user_id_country){
                      echo 'image_green_blue,';
                    }
                    if($con_id!=$user_id_country){ 
                      echo 'image_green,';
                    }
                    else {
                        echo 'image_blue,';
                    }
                  }
                }; ?>
                      label: { color: '#fff', fontWeight: 'bold', fontSize: '14px', text: '<?php echo $elementCount[$viena_salis]; ?>' }
                    });
                    <?php echo 'marker'.$i; ?>.addListener('click', function() {
                        infowindow.open(map, <?php echo 'marker'.$i; ?>);
                    });
                    <?php
                }
            }
        };?>
      }

编辑: $indivitualios_salys- 看起来像:

Array
(
    [0] => Aruba
    [1] => Lithuania
    [2] => Bolivia
    [3] => Ukraine
    [4] => Bosnia and Herzegovina
    [5] => Greece
    [9] => United Kingdom
)

$google_maps 包含所有国家/地区,但简而言之,它看起来像:

Array
(
    [0] => Array
        (
            [0] => Andorra
            [1] => 42.546245
            [2] => 1.601554
        )

    [1] => Array
        (
            [0] => United Arab Emirates
            [1] => 23.424076
            [2] => 53.847818
        )

    [2] => Array
        (
            [0] => Afghanistan
            [1] => 33.93911
            [2] => 67.709953
        )

【问题讨论】:

  • 所以你需要 contentString 保存多个值?
  • @AmitSharma 该代码会在地图上的标记上弹出一个可点击的弹出窗口,因为它显示“计划访问(此处为国家名称)”并且这些标记位于不同的国家,因此应该更改,所以是的。
  • @StackSlave 谢谢你的小费,是的,我知道这是一团糟,而且在我使用 django 框架进行大学项目之前,一定有办法更有效地做到这一点,但是一旦我进入实习期(因为它是唯一的选择,因为没有公司使用 python 并接受实习生)我曾经用 php、js、css、wp 等做过事情。所以它和我习惯的不一样。
  • 这包含所有值 $viena_salis
  • 请举例说明您在$indivitualios_salys$Google_maps 中的数据是什么样的。另外,我真的建议您不要在 HTML 或 JS 中混合 PHP 块 - 这会使事情变得不必要地难以阅读。

标签: javascript php


【解决方案1】:

我简化了您的代码并准备了一段简短的 sn-p 代码,在我的代码中 $viena_salis 正在迭代数组的所有匹配值,您可以通过复制下面的代码来查看它并查看控制台它会导致你

安道尔

阿富汗

$indivitualios_salys = array('Andorra','Lithuania','Afghanistan','Ukraine','Bosnia and Herzegovina','Greece','United Kingdom');


$Google_maps = array(
                array('Andorra',42.546245,1.601554),
                array('United Arab Emirates',42.546245,1.601554),
                array('Afghanistan',42.546245,1.601554),

            );


        $i=0;
        foreach ($indivitualios_salys as $viena_salis) {
            $i++;
            foreach ($Google_maps as $gm_salis) {
                if ($viena_salis==$gm_salis[0]) {
                    ?>
                    <script>
                        var viena_salis = '<?php echo $viena_salis ?>';
                        console.log(viena_salis);
                    </script>
                    <?php
                }
            }
        };

?>

以上代码已经过测试和工作,

我给了你上述解决方案作为你陈述的答案, " my value $viena_salis 只带出最后一个值(在本例中为英国) ",

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多