2

未定義のサイズの配列があります。例:

<?php
$array["foo"] = 86 ;
$array["bar"] = 49 ;
$array["matt"] = 96 ;
?>

配列の内部ポインタを邪魔したくありませんが、代わりに配列の最後から2番目の値のCOPYを取得したいと思います。

4

3 に答える 3

7

実際には順序付きリストが必要なのに、なぜマップを使用するのかわかりませんが、

$tmp = array_values($array);
echo $tmp[count($tmp) -2];

するべきです。php5.4では、これはどちらかで動作するはずです

echo array_values($array)[count($array)-2];
于 2012-08-03T07:05:28.067 に答える
2

配列のサイズがわからないため、すべての値を別の配列にコピーすることはお勧めできません。

次のコードは、最後から2番目の位置から長さ1の配列を切り取り、とを設定$key$valueます。

$pair = array_slice($array, -2, 1, true);
$key = key($pair);
$value = current($pair);

PS:おそらく単純な分離関数に入れるべきですか?!

于 2012-08-03T18:36:56.580 に答える
0

このようにできます。

$array["foo"] = 86 ;
$array["bar"] = 49 ;
$array["matt"] = 96 ;

$x = count($array);

foreach($array as $row)
{
    if($x == 2)
    { $secondLast = $row;}
    $x--; 
}
echo $secondLast;

連想配列を使用しているためです。

于 2012-08-03T07:13:51.437 に答える