我怎样才能得到第一个 smarty 数组元素?
其实我知道该怎么做......但我有以下问题。
我得到了一个看起来像这样的数组
[DATA] => Array
(
[12] => Array
(
[content] => foobar
)
[1] => Array
(
[content] =>
)
[2] => Array
(
[content] =>
)
[3] => Array
(
[content] =>
)
//this is a snipit of {$myVar|@print_r}
这一直持续到[11]
由于某种原因,在这个位置没有[0]
和 a [12]
。
我不知道这是否总是 12,但我知道它总是排在第一位。
我无法对这个数组进行排序,因为有另一个数组具有相同的排序顺序,我必须保留这个顺序以便以后输出。
有没有办法在不使用array[0]
or的情况下选择第一个元素array.0
?
信息:我正在进行的项目使用 Smarty 2
编辑
- 如果我知道如何,我会重新索引数组:)
由于几个小时后现在有答案,我暂时解决了我的问题。
为了解决这个问题,我{php}
在 smarty 中打开,得到我需要的数组,把它分成两个数组(当然要重新索引它们,所以它从 开始0
)。比我将每个数组中的 pos 临时保存0
到一个临时数组。用下划线 (_)覆盖 orig 0
,然后对它们进行多重排序,将原始值放回0
并将它们传递回$this->_tpl_vars
非常复杂的方式。(都在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}