Die ersten Smarty-Array-Element
Wie bekomme ich die ersten smarty-array-element ?
Eigentlich weiß ich, wie dies zu tun... aber ich habe folgende Problem.
Bekomme ich ein array übergeben, das aussieht wie dieses
[DATA] => Array
(
[12] => Array
(
[content] => foobar
)
[1] => Array
(
[content] =>
)
[2] => Array
(
[content] =>
)
[3] => Array
(
[content] =>
)
//this is a snipit of {$myVar|@print_r}
dieser geht nach unten, bis [11]
Aus irgendeinem Grund gibt es keine [0]
und ein [12]
auf dieser position.
Ich weiß nicht, ob dies werde immer 12 sein, aber ich weiß, dass es immer an der ersten position.
Kann ich nicht Sortieren dieses Arrays, da gibt es ein weiteres array, das die gleichen "Sortierfolge" und ich habe zu halten, um für die spätere Ausgabe.
Ist es, einen Weg zu wählen das erste element, ohne mit array[0]
oder array.0
?
Info: Die im Projekt arbeiten, verwendet Smarty 2
BEARBEITEN
- Würde ich neu indizieren, array, wenn ich wüsste wie 🙂
, Da gibt es jetzt genau richtig nach ein paar Stunden habe ich mein problem gelöst temporär.
Um dieses Problem zu lösen, öffnete ich {php}
in smarty, hab das array brauche ich, aufgeteilt in zwei arrays (re-Indizierung Ihnen natürlich so beginnt es bei 0
). Als ich die temp-save-pos 0
von jedem array in ein temporäres array. Überschreiben Sie die orig 0
mit Unterstrich (_) und als multisort Sie, setzen Sie wieder den ursprünglichen Wert zu 0
und geben Sie zurück zu $this->_tpl_vars
sehr komplizierte Art und Weise. (alle innerhalb des tpl)
{php}
//get array data and re-index it
$i=0;
foreach( $this->_tpl_vars['options'] as $option )
{
foreach( $option['DATA'] as $data )
$array[$i][] = $data;
$i++;
}
//delete empty entrys
$i=0;
foreach( $array[1] as $data ){
if(trim($data['content']) != ""){
$s[] = $array[0][$i];
$a[] = $array[1][$i];
}
$i++;
}
//temp save first values
$tmp_s = $s[0];
$tmp_a = $a[0];
//override first values to have a clean sort and keep them values on pos 0
$s[0] = $a[0] = "_";
//sort the arrays
array_multisort($s,$a);
//putting back the original values
$s[0] = $tmp_s;
$a[0] = $tmp_a;
//pass the array back to tpl_vars
$this->_tpl_vars['new_options'][] = $s;
$this->_tpl_vars['new_options'][] = $a;
{/php}
InformationsquelleAutor Dwza | 2014-08-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
WENN in PHP Sie haben:
In Smarty können Sie verwenden:
Und Sie bekommen angezeigt:
Allerdings, wenn in PHP, die Sie verwenden:
Und in Smarty die gleiche, wie ich zeigte am Anfang, das Ergebnis wird sein:
Würden Sie brauchen, um zu rufen:
nach
ich denke, man kann nicht rufen Sie reset-array in Smarty, aber ich könnte falsch sein.Es ist auch möglich, einen reset-array in Smarty, aber es ist nicht so einfach.
Wenn in PHP Sie haben:
In Smarty, die Sie nutzen könnten:
Und Sie erhalten:
als Ergebnis
InformationsquelleAutor Marcin Nabiałek