Kom ihåg mig?
Home Menu

Menu


Loopa flera arrays

Ämnesverktyg Visningsalternativ
Oläst 2008-03-09, 18:43 #1
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
Hej,
går det att loopa flera stycken arrays i PHP i samma loop?
Verkar inte funka med foreach.

Kod:
<?php
function make_list($url,$title,$display)
{
	$return = '';
	foreach($url as $url)
	{
 *$return = $return . $url;
 *foreach($title as $title)
 *{
 *	$return = $return . $title;
 *	foreach($display as $display)
 *	{
 * *$return = $return . $display;
 *	}
 *}
	}
	return $return;
}

$url = array();
$title = array();
$display = array();

$url[0] = 'url0';
$title[0] = 'title0';
$display[0] = 'display0';
$url[1] = 'url1';
$title[1] = 'title1';
$display[1] = 'display1';

echo make_list($url,$title,$display);
?>
Skriver ut...
Citat:
Warning: Invalid argument supplied for foreach() in /home/web28141/domains/roosstudios.com/public_html/test.php on line 11

Warning: Invalid argument supplied for foreach() in /home/web28141/domains/roosstudios.com/public_html/test.php on line 8
url0title0display0display1title1url1
Det funkar iofs, men gillar inte när jag får massa errors <_<
Och jag tänker inte trycka in ini_set('display_errors', '0'); utan jag vill ha "riktig" kod.

Tack
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-09, 18:49 #2
MMCs avatar
MMC MMC är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2008
Inlägg: 560
MMC MMC är inte uppkopplad
Mycket flitig postare
MMCs avatar
 
Reg.datum: Jan 2008
Inlägg: 560
PHP klagar för att du använder samma variabel för både X och Y i foreach (X as Y). Testa att kalla dina arrayer för plural, så här: foreach ($titles as $title)
MMC är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-09, 19:11 #3
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
Kod:
function make_list($urls,$titles,$displays)
{
	$return = '';
	foreach($urls as $url)
	{
 $return = $return . $url;
 foreach($titles as $title)
 {
 	$return = $return . $title;
 	foreach($displays as $display)
 	{
  $return = $return . $display;
 	}
 }
	}
	return $return;
}
blir...
Citat:
url0title0display0display1title1display0display1ur l1title0display0display1title1display0display1
Jag förstår ju varför..
1:1 -> 1:1, 2:1, 2:2, 3:1, 3:2
1:2 -> 1:2, 2:1, 2:2, 3:1, 3:2
.. men det funkade innan jag bytte namn på variablarna, finns det något annat sätt?
Något som borde fungera är
Kod:
foreach($urls as $url and $titles as $title and $displays as $display)
men det funkade inte :unsure:
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-09, 20:00 #4
patjoh patjoh är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2006
Inlägg: 26
patjoh patjoh är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2006
Inlägg: 26
Om det bara är en lista som det handlar om nu borde väl nåt sånt här fungera eller har jag missförstått vad du försöker göra?


Kod:
function make_list($urls, $titles, $displays) {
	$str = "";
	foreach($urls as $index => $value) {
 $str .= $value . $titles[$index] . $displays[$index];
	}
	
	return $str;
}
patjoh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-09, 20:00 #5
HenSod HenSod är inte uppkopplad
Flitig postare
 
Reg.datum: May 2005
Inlägg: 484
HenSod HenSod är inte uppkopplad
Flitig postare
 
Reg.datum: May 2005
Inlägg: 484
Du har nästlade foreach och det innebär att en foreach i en annan foreach loopar igenom hela vektorn innan den yttersta foreach går vidare till nästa index. Ett bättre och fungerande sätt är att använda for.
Kod:
function make_list($urls,$titles,$displays)
{
$return = '';
for ($i=0; $i<sizeof($urls); $i++) {
 $return .= $urls[$i] . $titles[$i] . $displays[$i];
}
return $return;
}
HenSod är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-09, 20:05 #6
NevYn NevYn är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 14
NevYn NevYn är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 14
En annan möjlig lösning?

Kod:
function make_list($arr)
{
	$ret = '';
	foreach ($arr as $key)
	{
 $ret .= "url: ".$key->url."<br>";
 $ret .= "title: ".$key->title."<br>";
 $ret .= "display: ".$key->display."<br><br>";
	}
	return $ret;
}

$container = array();

$container[0]->url = 'url0';
$container[0]->title = 'title0';
$container[0]->display = 'display0';

$container[1]->url = 'url1';
$container[1]->title = 'title1';
$container[1]->display = 'display1';

echo make_list($container);
NevYn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-09, 20:05 #7
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
Tack så mycket HenSod

Edit: och NevYn
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 02:17.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017