| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
BB-BF-BM Gast
|
Eine Funktion macht nicht, was sie soll... |
|
|
EDIT: Tut mir Leid wegen der langen Code-Stellen, aber ich wusste nicht, wie ich es einfacher hätte darstellen können.
Ich habe folgenden Code(-Ausschnitt): | PHP-Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| <?php
class template
{
var $assign_block_vars = array();
var $blocks = array();
function assign_block_vars($loopname, $var_array, $src = '')
{
if( !is_array($var_array) )
{
die('An Funktion $this->assign_block_vars() muss der zweite Parameter als Array übergeben werden!');
}
if( $src != '' )
{
$src_arr = explode('.', $src);
for( $i=0 ; isset($inloops[$i]) ; $i++ )
{
$src_array[$i] = explode('|', $inloops[$i]);
$src_arr_i0 = $src_array[$i][0];
$src_arr_i1 = $src_array[$i][1];
$assign_block_vars_src = ( isset($assign_block_vars_src) ? $assign_block_vars_src[$src_arr_i0][$src_arr_i1] : $this->assign_block_vars[$src_arr_i0][$src_arr_i1] );
$blocks_src = ( isset($blocks_src) ? $blocks_src[$src_arr_i0] : $this->blocks[$src_arr_i0] );
}
}
else
{
$assign_block_vars_src = $this->assign_block_vars;
$blocks_src = $this->blocks;
}
if( isset($blocks_src[$loopname]) )
{
$loop_nr = $blocks_src[$loopname] + 1;
}
else
{
$loop_nr = 0;
$blocks_src[$loopname] = 0;
}
foreach( $var_array as $var_key => $var_value )
{
if( is_array($var_value) )
{
$function_assign_block_vars = $this->assign_block_vars(
$var_key,
$var_value,
( ($src != '') ? ($loopname.'|'.$loop_nr.'.'.$src) : ($loopname.'|'.$loop_nr) )
);
$assign_block_vars_src[$loopname][$loop_nr][$var_key] = $function_assign_block_vars;
}
else
{
$assign_block_vars_src[$loopname][$loop_nr][$var_key] = $var_value;
}
}
if( $src != '' )
{
$this->blocks = $blocks_src;
$this->assign_block_vars = $assign_block_vars_src;
}
else
{
$this->assign_block_vars = $assign_block_vars_src;
$this->blocks = $blocks_src;
}
return $assign_block_vars_src[$loopname];
}
}
?> |
Dieser wird in einer anderen Datei folgendermaßen angewendet: | PHP-Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13
| for( $i=0 ; $i < 6 ; $i++ )
{
$template->assign_block_vars('cat_row', array(
'URL' => $i.'Url'.$i,
'NAME' => $i.'Name'.$i,
'S_HAS_SUBARTS' => ($i % 2),
'subart_row' => array(
'URL' => 'U'.$i.'R'.$i.'L',
'NAME' => 'N'.$i.'A'.$i.'M'.$i.'E'
)
));
}
print_r($template->assign_block_vars); // Zum Überprüfen der Funktion |
Wie man unten sehen kann, überprüfe ich, ob alles gut gegangen ist, doch dies ist nicht der Fall. Ausgegeben wird folgendes: | Code: | Array
(
[cat_row] => Array
(
[0] => Array
(
[URL] => 0Url0
[NAME] => 0Name0
[S_HAS_SUBARTS] => 0
[subart_row] => Array
(
[0] => Array
(
[URL] => U0R0L
[NAME] => N0A0M0E
)
)
)
[1] => Array
(
[URL] => 5Url5
[NAME] => 5Name5
[S_HAS_SUBARTS] => 1
[subart_row] => Array
(
[0] => Array
(
[URL] => U5R5L
[NAME] => N5A5M5E
)
)
)
)
) |
Ausgegeben werden sollte soetwas: | Code: | Array
(
[cat_row] => Array
(
[0] => Array
(
[URL] => 0Url0
[NAME] => 0Name0
[S_HAS_SUBARTS] => 0
[subart_row] => Array
(
[0] => Array
(
[URL] => U0R0L
[NAME] => N0A0M0E
)
)
)
[1] => Array
(
[URL] => 1Url1
[NAME] => 1Name1
[S_HAS_SUBARTS] => 1
[subart_row] => Array
(
[0] => Array
(
[URL] => U1R1L
[NAME] => N1A1M1E
)
)
)
[2] => Array
(
[URL] => 2Url2
[NAME] => 2Name2
[S_HAS_SUBARTS] => 0
[subart_row] => Array
(
[0] => Array
(
[URL] => U2R2L
[NAME] => N2A2M2E
)
)
)
[3] => Array
(
[URL] => 3Url3
[NAME] => 3Name3
[S_HAS_SUBARTS] => 1
[subart_row] => Array
(
[0] => Array
(
[URL] => U3R3L
[NAME] => N3A3M3E
)
)
)
[4] => Array
(
[URL] => 4Url4
[NAME] => 4Name4
[S_HAS_SUBARTS] => 0
[subart_row] => Array
(
[0] => Array
(
[URL] => U4R4L
[NAME] => N4A4M4E
)
)
)
[5] => Array
(
[URL] => 5Url5
[NAME] => 5Name5
[S_HAS_SUBARTS] => 1
[subart_row] => Array
(
[0] => Array
(
[URL] => U5R5L
[NAME] => N5A5M5E
)
)
)
)
) | Woran liegt das / Wie erreiche ich mein gewünschtes Ergebnis? |
|
|
|
| 21 Mai 2006 19:19 |
|
  |
BB-BF-BM Gast
|
 |
|
|
Habs gestern Nacht selbst noch entdeckt:
statt
| PHP-Code: | 1 2 3 4
| if( isset($blocks_src[$loopname]) )
{
$loop_nr = $blocks_src[$loopname] + 1;
} |
muss es so heißen: | PHP-Code: | 1 2 3 4 5
| if( isset($blocks_src[$loopname]) )
{
$blocks_src[$loopname]++;
$loop_nr = $blocks_src[$loopname];
} |
|
|
|
|
| 22 Mai 2006 06:17 |
|
 |
|