我想做的是通过/,/从MySQL爆炸一些字符串,然后以某种方式能够在循环外引用这些数组。

这是因为,每个区域,国家和省都以适当的顺序在$ data数组中列出,我需要以某种方式将它们粘合在一起。

例如,在MySQL内部,有一个字符串存储为:

Regions: Africa, Balkans, South America
Countries: Uganda, Greece, Brazil
Provinces: Ubuge, Athenos, Santa Catarina


但是我很难想象如何将它们捆绑在一起,请记住有时每个数组中只有一个成员,或者最多可能有一百个成员。但是每个数组始终包含相同的数字。

我的尝试是这样的……我可以让它们像这样打印,但是我无法保存它们以供循环外使用。

  for ($i = 0; $i < $numrows; $i++){

            $provinces = explode(',', $data[$i]['provinces']) ;
            $countries = explode(',', $data[$i]['countries']) ;
            $regions = explode(',', $data[$i]['regions']) ;

            foreach($countries as &$country){

            echo $country;

                }
}


任何想法或帮助,将不胜感激。

我希望最终产品的外观是

地点:

Africa --- Uganda --- Ubuge
Balkans --- Greece --- Athenos
South America --- Brazil --- Santa Catarina

最佳答案

嗯,如果我了解您的问题,那么关联数组可能是一个很好的解决方案:

$region_list = array();

for ($i = 0; $i < $numrows; $i++){
     $provinces = explode(',', $data[$i]['provinces']) ;
     $countries = explode(',', $data[$i]['countries']) ;
     $regions = explode(',', $data[$i]['regions']) ;

     // So we don't have to run count every time in the loop
     $length = count($countries);

     // Since it's based of the same numeric index
     for($j = 0; $j < $length; $j++)
        $region_list[$regions[$j]] = array(
          'province' => $provinces[$j],
          'country' => $countries[$j]);
     }
}

// Now to loop through all our data
// For an associative array, we can loop over key => value so $region
// becomes the region name
foreach($region_list as $region => $data) {
   echo "$region --- {$data['country']} --- {$data['province']}";
}

10-06 13:03