PHP中的数组值分解
我正在编写一个使用代理连接到服务器的脚本,遍历列表,直到找到一个可用的代理 代理列表如下所示:PHP中的数组值分解,php,arrays,Php,Arrays,我正在编写一个使用代理连接到服务器的脚本,遍历列表,直到找到一个可用的代理 代理列表如下所示: 127.0.0.1:8080 127.0.0.1:8080 127.0.0.1:8080 127.0.0.1:8080 127.0.0.1:8080 127.0.0.1:8080 127.0.0.1:8080 当然,它不是一个IP和一个又一个端口。现在,最初我只是想使用file()将它们全部放入一个数组中,但显然,这会留下一个包含整行值的数组 理想情况下,我想要的是一个类似 "127.0.0.1"
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
当然,它不是一个IP和一个又一个端口。现在,最初我只是想使用file()
将它们全部放入一个数组中,但显然,这会留下一个包含整行值的数组
理想情况下,我想要的是一个类似
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
但我不确定最简单(也是最有效)的方法。有什么建议吗?在文件上循环并进行一些分析:
$path = './file.txt';
$proxies = array();
foreach(file($path, FILE_SKIP_EMPTY_LINES) as $line) {
$proxy = trim($line);
list($ip, $port) = explode(':', $proxy);
$proxies[$ip] = $port;
}
var_dump($proxies);
应该注意,您的“预期”示例是无效的数组表示法,因为每个元素的键都是相同的。但我以为你是在搞格式化 在文件上循环并进行一些分析:
$path = './file.txt';
$proxies = array();
foreach(file($path, FILE_SKIP_EMPTY_LINES) as $line) {
$proxy = trim($line);
list($ip, $port) = explode(':', $proxy);
$proxies[$ip] = $port;
}
var_dump($proxies);
应该注意,您的“预期”示例是无效的数组表示法,因为每个元素的键都是相同的。但我以为你是在搞格式化 使用以下代码
<?php
$data = "127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080";
$urls = explode("\n",$data);
$new_data = array();
foreach($urls as $url){
if($url!=""){
$url_parts = explode(":",$url);
$new_data[] = array($url_parts[0]=>$url_parts[1]);
}
}
print_r($new_data);
?>
使用以下代码
<?php
$data = "127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080";
$urls = explode("\n",$data);
$new_data = array();
foreach($urls as $url){
if($url!=""){
$url_parts = explode(":",$url);
$new_data[] = array($url_parts[0]=>$url_parts[1]);
}
}
print_r($new_data);
?>
您还可以将文件\u跳过\u空行
添加到文件()
调用中。非常感谢!看起来肯定比我要做的工作好多了。还有,我的问题真的很糟糕,以至于人们不得不投反对票吗该死。在接下来的2分钟内无法接受您的回答。您还可以将文件\u跳过\u空行
添加到文件()
呼叫中。非常感谢!看起来肯定比我要做的工作好多了。还有,我的问题真的很糟糕,以至于人们不得不投反对票吗该死。2分钟内无法接受您的答案。