Php 从smarty中的数组获取密钥

Php 从smarty中的数组获取密钥,php,smarty,Php,Smarty,如果我有一个如下所示的数组: $my_array = array(2) { ["mykey"]=> int(2) ["mysecondkey"]=> int(3) } 如何获取第一个元素的键值 到目前为止,我知道我可以执行$my_array[0],但如何获得第一个键?我想避免做任何事 谢谢 这是关联数组(字符串键)。直接使用密钥的名称: $my_array["mykey"]; 阅读 要提取关键帧,请使用: 您可以使用获取阵列键的列表: $keys = array_keys($my

如果我有一个如下所示的数组:

$my_array = array(2) { ["mykey"]=> int(2) ["mysecondkey"]=> int(3) }
如何获取第一个元素的键值

到目前为止,我知道我可以执行
$my_array[0]
,但如何获得第一个键?我想避免做任何事

谢谢

这是关联数组(字符串键)。直接使用密钥的名称:

$my_array["mykey"];
阅读
要提取关键帧,请使用:

您可以使用获取阵列键的列表:

$keys = array_keys($my_array);
echo $keys[0]; // outputs "mykey"
如果要在Smarty中执行此操作,可以使用以下代码输出阵列的第一个键:

{foreach from=$my_array key=my_key item=i name=my_array}
  {if $smarty.foreach.my_array.first}{$my_key}{/if}
{/foreach}
array_keys()将获取数组中的所有键,而这将获取第一个键,而不会迭代所有其他键并忽略数组的其余部分

这是一个假循环,因为中断将在第一次迭代时退出,所以实际上您并没有对所有值执行真正的foreach

foreach($my_array as $firstKey=>$unused) {
    break;
}
echo($firstKey);
如果您需要一个函数,您可以使用:

function first_key($arr) {
    foreach($my_array as $firstKey=>$unused) {
        return $firstKey;
    }
}

同样,函数在第一次迭代时返回,因此您没有对所有元素执行“实数”foreach。

我想获取第一个元素的键名,而不是第一个元素的值。Denis Ermolin,我想使用数组键进行voiad。我在smarty中,我只想从$my_数组[0]中获取该密钥。为什么不想修改$my_数组?制作array_键并传递给smartyCarsten,我会得到一个类似于我在smarty中显示的数组,我需要直接从模板访问该数组。@HommerSmith:好的,我添加了一个关于如何在smarty模板中执行此操作的示例。如果您要输入键名或分配给该键名的值,则有点不清楚。
foreach($my_array as $firstKey=>$unused) {
    break;
}
echo($firstKey);
function first_key($arr) {
    foreach($my_array as $firstKey=>$unused) {
        return $firstKey;
    }
}