2014-05-25 19 views
0

我有这样的事情:PHP数组两个值,并调用一对

host1 | port1 
host2 | port2 
host3 | port3 
host4 | port4 

现在,我需要插入对到一个数组,所以我可以在一个循环中使用它们:

我试着通过阵列

$hosts = array('host1','host2','host3'); 

foreach ($hosts as $host) { 

    echo $host; 

} 

如何添加对到阵列中的一个值循环,这样我就可以调用说host它输出主机和端口?

回答

1

你可以创建你的数组像这里面的每个主机创建一个名为键:

$hosts = array(
    'host1' => 'port1', 
    'host2' => 'port2', 
    'host3' => 'port3' 
); 

(例#1在这里:http://www.php.net/manual/en/function.array.php

然后你可以像这样遍历数组来获取数组键和值:

foreach($hosts as $host => $port){ 
    echo 'This is the ' . $host; 
    echo 'This is the ' . $port; 
} 

http://www.php.net/manual/en/control-structures.foreach.php

+0

谢谢,这正是我所需要的... – skymario84

+0

一个小的补充,我怎么能做到这一点与数组中的三个值? – skymario84

+0

您可以将我的答案与@ Bill's结合起来,构建如下的数组: '$ hosts = array('host1'=> array('port1a','port1b'));' 然后您可以访问数据在该阵列中,如下所示: 'echo $ hosts ['host1'] [0]; //回声'port1a'' – edcs

1

你可以添加阵列到阵列中,这样你就得到一个多维数组:

$hosts = array(array('host1', 'port1'), array('host2', 'port2')); 
1

您可以使用多维数组。像这样

$data= array 
    (
    array("host1","yourport1"), 
    array("host2","yourport2"), 
    array("host3","yourport3"), 
); 

,可以像这样访问

echo "Host: ". $data[0][0]." Port: ".$data[0][1]; 
1

快捷的方式:

// also You can define it as string directly, but I think You have a file :) 
foreach(explode(PHP_EOL,file_get_contents('myIP.txt')) as $line){ 
    $hosts[explode(' | ',$line)[0]] = explode(' | ',$line)[1]; 
} 

var_dump($hosts); 

// You will have pairs host1 => port1, host2=>port2, etc 

界面上有array_walk更多的方式,但我懒得阅读有关array_walk文档。希望这个解决方案将完全解决您的任务

+0

不,我需要添加到数组的数据是静态的,它永远不会改变,像PHP项目的配置部分,以后导入到其他脚本......但感谢您的答案 – skymario84

+0

@ skymario84所以你可以像'$ myhosts ='host1 | port1 \ r \ n host2 | port2 \ r \ n';''那样定义var,并用'$ myhosts'替换'file_get_contents('myIP.txt')'。它会工作。干杯 –

相关问题