Php 我可以为MySql表值指定字符串吗?
我有一个MySql表,用于存储州和城市列表中的用户状态和城市。我特别将每个州编码为两个字母的缩写版本,如华盛顿州的华盛顿州和加利福尼亚州的加利福尼亚州,每个城市都有两个字母的缩写,城市名称的格式如下:科罗拉多州的博尔德将是博尔德市和盐湖城的合称,犹他州将是UT盐湖城,以避免不同的州使用相同的城市名称。PHP在city列下插入值UT salt lake city,但是当我通过PHP调用变量时,它显示如下:您的位置是:犹他州UT salt lake city。 为了解决这个问题,我列出了一系列变量Php 我可以为MySql表值指定字符串吗?,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我有一个MySql表,用于存储州和城市列表中的用户状态和城市。我特别将每个州编码为两个字母的缩写版本,如华盛顿州的华盛顿州和加利福尼亚州的加利福尼亚州,每个城市都有两个字母的缩写,城市名称的格式如下:科罗拉多州的博尔德将是博尔德市和盐湖城的合称,犹他州将是UT盐湖城,以避免不同的州使用相同的城市名称。PHP在city列下插入值UT salt lake city,但是当我通过PHP调用变量时,它显示如下:您的位置是:犹他州UT salt lake city。 为了解决这个问题,我列出了一系列变量
if ($city == "AL-auburn") { $city = "Auburn"; }
else if ($city == "AL-birmingham") { $city = "Birmingham"; }
else if ($city == "GA-columbus") { $city = "Columbus"; $state = "Georgia"; }
else if ($city == "AL-dothan") { $city = "Dothan"; }
else if ($city == "AL-florence") { $city = "Forence"; }
else if ($city == "AL-muscle-shoals") { $city = "Muscle Shoals"; }
else if ($city == "AL-gadsden-anniston") { $city = "Gadsden Anniston"; }
else if ($city == "AL-huntsville") { $city = "Huntsville"; }
else if ($city == "AL-decatur") { $city = "Decatur"; }
else if ($city == "AL-mobile") { $city = "Mobile"; }
else if ($city == "AL-montgomery") { $city = "Montgomery"; }
else if ($city == "AL-tuscaloosa") { $city = "Tuscaloosa"; }
有没有办法缩短这个过程,或者至少从一个单独的文件中调用它,这样我就不必在每次调用位置时都复制/粘贴它了?这样的方法怎么样
$name = 'UL-salt-lake-city';
ucwords(str_replace("-"," ",substr($name, 3)));
皈依盐湖城像这样的怎么样
$name = 'UL-salt-lake-city';
ucwords(str_replace("-"," ",substr($name, 3)));
转换为盐湖城如果需要与代码不直接对应的名称,可以使用关联数组:
$city_names = array(
'CO-boulder' => 'Boulder, Colorado',
'GA-columbus' => 'Columbus, Georgia',
// ...
);
$name = $city_names[$city];
如果需要具有与其代码不直接对应的名称,可以使用关联数组:
$city_names = array(
'CO-boulder' => 'Boulder, Colorado',
'GA-columbus' => 'Columbus, Georgia',
// ...
);
$name = $city_names[$city];
这里需要一个hashmap,您可以在PHP中以数组的形式进行:
$cities = array(
"AL-auburn" => array("Auburn"),
"AL-birmingham" => array("Birmingham"),
"GA-columbus" => array("Columbus", "Georgia"),
...
);
if (isset($cities[$city])) {
list($city, $state) = $cities[$city] + array(null, null);
}
然后还可以存储城市阵列
或者,您可以利用现有信息:
list($state, $city) = explode('-', $city, 2);
$city = ucwords(strtr($city, '-', ' '));
然后,您可以使用哈希映射将状态2字母代码再次映射到它们的长名称:
$states = array(
'AL' => 'Alabama',
'GA' => 'Georgia',
...
);
if (isset($states[$state])) {
$state = $states[$state];
}
这里需要一个hashmap,您可以在PHP中以数组的形式进行:
$cities = array(
"AL-auburn" => array("Auburn"),
"AL-birmingham" => array("Birmingham"),
"GA-columbus" => array("Columbus", "Georgia"),
...
);
if (isset($cities[$city])) {
list($city, $state) = $cities[$city] + array(null, null);
}
然后还可以存储城市阵列
或者,您可以利用现有信息:
list($state, $city) = explode('-', $city, 2);
$city = ucwords(strtr($city, '-', ' '));
然后,您可以使用哈希映射将状态2字母代码再次映射到它们的长名称:
$states = array(
'AL' => 'Alabama',
'GA' => 'Georgia',
...
);
if (isset($states[$state])) {
$state = $states[$state];
}
只需去掉刺上的三个字符就可以了吗?如果是,则使用substr$city=substr$city,3;为什么不将正确的城市名称也存储到数据库中?我必须在表中创建一个新的and字段。。。但在我做了这些之后,时间会更短!只需去掉刺上的三个字符就可以了吗?如果是,则使用substr$city=substr$city,3;为什么不将正确的城市名称也存储到数据库中?我必须在表中创建一个新的and字段。。。但在我做了这些之后,时间会更短!谢谢你的快速回复。它立即起作用,甚至第一个字母都大写了,我不知道这是不是CSS。写下美国每个城市的if声明要容易得多。只需将第二行更改为$name=ucwords。。。。可能是因为我是PHP开发新手,我有一段时间没有得到这一点。资本化来自PHPAPI中的函数。您会注意到字符串中的任何单词都将首字母大写。感谢您的快速回复。它立即起作用,甚至第一个字母都大写了,我不知道这是不是CSS。写下美国每个城市的if声明要容易得多。只需将第二行更改为$name=ucwords。。。。可能是因为我是PHP开发新手,我有一段时间没有得到这一点。资本化来自PHPAPI中的函数。你会注意到字符串中的任何单词的首字母都会大写。我认为如果我没有为state指定单独的字段,这个想法会很好。。。我应该把这个放在我的问题里。但是如果是这样的话,我可能会使用这个答案。@afterimagedesign:问题的第二部分是一个变体。自由地获得灵感。我只是想展示这些关联数组是如何工作的,这样你就可以保护这些庞大的if集合,这些if集合既繁重又不必要。我认为如果我还没有一个单独的状态字段,这个想法会很好。。。我应该把这个放在我的问题里。但是如果是这样的话,我可能会使用这个答案。@afterimagedesign:问题的第二部分是一个变体。自由地获得灵感。我只是想展示一下这些关联数组是如何工作的,这样您就可以保护这些庞大的if集合,它们既繁重又不必要。