2010-07-26 32 views
0

寻找循环访问一个URL数组,并将每个关键字从第二个数组注入到每个URL中,但无法理解数组。例如:通过第二个数组循环阵列

$key = array("Keyword+1", "Keyword+2", "Keyword+3"), 
$url =array("google.co.uk/#hl=en&q=", "bing.com/search?q=","uk.search.yahoo.com/search?vc=&p="), 

我想上述输出:

google.co.uk/#hl=en & Q =关键字+ 1
google.co.uk/#hl = EN & q =关键字+ 2
google.co.uk/#hl=en & q =关键字+ 3
bing.com/search?q=Keyword+1
bing.com/search?q=Keyword +2
bing.com/search?q=K eyword + 3
uk.search.yahoo.com/search?vc= & P =关键字+ 1
uk.search.yahoo.com/search?vc= & P =关键字+ 2
uk.search.yahoo .com/search?vc = & p =关键字+ 3

是否有一种有效的方法来实现这一目标? :)

+0

你可能会从http://stackoverflow.com/questions/2246493/concatenate-values-of-n-arrays-in-php看到一些好处 – 2010-07-26 20:02:47

回答

0

这里是你如何能做到这一点:

$keys = array("Keyword+1", "Keyword+2", "Keyword+3"); 
$urls =array("google.co.uk/#hl=en&q=", "bing.com/search?q=","uk.search.yahoo.com/search?vc=&p="); 

$my_array = array(); 

foreach($urls as $url) 
{ 
    foreach($keys as $key) 
    { 
     $my_array[] = $url . $key; 
    } 
} 

print_r($my_array); 

结果:

Array 
(
    [0] => google.co.uk/#hl=en&q=Keyword+1 
    [1] => google.co.uk/#hl=en&q=Keyword+2 
    [2] => google.co.uk/#hl=en&q=Keyword+3 
    [3] => bing.com/search?q=Keyword+1 
    [4] => bing.com/search?q=Keyword+2 
    [5] => bing.com/search?q=Keyword+3 
    [6] => uk.search.yahoo.com/search?vc=&p=Keyword+1 
    [7] => uk.search.yahoo.com/search?vc=&p=Keyword+2 
    [8] => uk.search.yahoo.com/search?vc=&p=Keyword+3 
) 
2
foreach($url as $currenturl) 
{ 
    foreach($key as $currentkey) 
    { 
     echo $currenturl . $currentkey . '\n'; 
    } 
} 

试试这个

0

您首先要遍历所有的$url阵列,那么对于$url阵列中的每个项目,您还需要遍历所有的$key阵列中的所有键和它们附加你从$url挑选的项目,

foreach ($url as $u) 
{ 
    foreach ($key as $k) 
    { 
     echo $u.$k."\n"; 
    } 
} 
0

什么你所描述的是外产品的推广。

这将是更有趣的定义高阶函数此:

/** 
* A generalization of the outer product, forming all the possible 
* combinations of the elements of the two arrays and feeding them 
* to $f. 
* The keys are disregarded 
**/ 
function array_outer($f, array $array1, array $array2) { 
    $res = array(); 
    foreach ($array1 as $e1) { 
     $cur = array(); 
     foreach ($array2 as $e2) { 
      $cur[] = $f($e1, $e2); 
     } 
     $res[] = $cur; 
    } 
    return $res; 
} 

$f = function ($a,$b) { return $a.$b; }; 
print_r(array_outer($f, array("a","b","c"), array("1", "2", "3"))); 

给出:

 
Array 
(
    [0] => Array 
     (
      [0] => a1 
      [1] => a2 
      [2] => a3 
     ) 

    [1] => Array 
     (
      [0] => b1 
      [1] => b2 
      [2] => b3 
     ) 

    [2] => Array 
     (
      [0] => c1 
      [1] => c2 
      [2] => c3 
     ) 

) 

见Mathematica的Outer