我有一个文本文件countries.txt
,其中包含所有国家/地区的列表:
1. Australia
2. Austria
3. Belgium
4. US
我想在country_handler.php
中创建一个像这样的数组:
$countries = array(
'1'=>'Australia',
'2'=>'Austria',
'3'=>'Belgium',
'4'=>'US'
);
怎么做?
答案 0 :(得分:1)
最好你可以在下面这样的函数中使用它 - 然后从任何地方调用这个函数
function getCountryList()
{
return array(
'1'=>'Australia',
'2'=>'Austria',
'3'=>'Belgium',
'4'=>'US'
);
}
答案 1 :(得分:0)
$data = file_get_contents('countries.txt');
$countries = explode(PHP_EOL, $data);
答案 2 :(得分:0)
$file = file('countries.txt');
$countries = array();
foreach ($file as $line) {
@list ($index, $country) = explode('.', $line);
$countries[trim($index)] = trim($country);
}
print_r($countries);
答案 3 :(得分:0)
$lines = file('countries.txt');
$newArr = array();
foreach ($lines as $line) {
$erg = preg_split('/\.\s+/', $line);
$newArr[$erg[0]] = $erg[1];
}
var_dump($newArr);
答案 4 :(得分:0)
幸运的是(有时候)正则表达式不包含.
中的换行符,所以你可以这样做:
$contents = file_get_contents('countries.txt');
preg_match_all('#(\d+)\.\s+(.+)#', $contents, $matches);
print_r($matches);
正则表达式意味着:
(\d+)
- 一个数字(另存)\.
- 一个文字点\s+
- 空格(.+)
- 除\n
或\r
之外的任何字符(行尾)(另存为)结果是:
Array
(
[0] => Array
(
[0] => 1. Australia
[1] => 2. Austria
[2] => 3. Belgium
[3] => 4. US
)
[1] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
[2] => Array
(
[0] => Australia
[1] => Austria
[2] => Belgium
[3] => US
)
)
我确信[1]
和[2]
您可以制作所需的键控数组。
array_combine
轻松救援:
$countries = array_combine($matches[1], $matches[2]);
答案 5 :(得分:0)
试试这个:
<?php
$data = file_get_contents('countries.txt');
$countries = explode(PHP_EOL,$data);
$cnt = 1;
foreach($countries as $val) {
if($val <>"") {
$res[$cnt] = strstr(trim($val), ' ');
$cnt++;
}
}
print_r($res);
?>