我想做的是通过/,/从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']}";
}