/ / Opakovanie poľa cez druhé pole - php, polia, foreach

Smyčovanie poľa cez druhé pole - php, pole, foreach

Pri pohľade na prechádzanie po rade adries URL a vloženie každého kľúčového slova z druhého poľa do každej adresy URL, ale nedokáže sa vyrovnať s pochopením polí. Napríklad:

$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="),

Chcel by som vyššie uvedené na výstup:

google.co.uk/#hl=en&q=Keyword+1
google.co.uk/#hl=en&q=Keyword+2
google.co.uk/#hl=en&q=Keyword+3
bing.com/search?q=Keyword+1
bing.com/search?q=Keyword+2
bing.com/search?q=Keyword+3
uk.search.yahoo.com/search?vc=&p=Keyword+1
uk.search.yahoo.com/search?vc=&p=Keyword+2
uk.search.yahoo.com/search?vc=&p=Keyword+3

Existuje efektívny spôsob, ako to dosiahnuť? :)

odpovede:

0 pre odpoveď č. 1

Môžete to urobiť takto:

$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);

výsledok:

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 pre odpoveď č. 2
foreach($url as $currenturl)
{
foreach($key as $currentkey)
{
echo $currenturl . $currentkey . "n";
}
}

skúste to


0 pre odpoveď č. 3

Najskôr chcete prepnúť na slučku $url pole, potom pre každú položku v priečinku $url poľa, chcete tiež vytvoriť slučku cez všetky kľúče v priečinku $key pole a pripojte ich k položke, z ktorej ste si vybrali $url,

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

0 pre odpoveď č. 4

To, čo popisujete, je zovšeobecnenie vonkajšieho produktu.

Bolo by zaujímavejšie definovať funkciu vyššieho rádu pre toto:

/**
* 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")));

dodáva:

Pole ( [0] => Pole ( [0] => a1 [1] => a2 [2] => a3 )  [1] => Pole ( [0] => b1 [1] => b2 [2] => b3 )  [2] => Pole ( [0] => C1 [1] => c2 [2] => c3 )  )

Viď Mathematica Outer.