Ответ 1
end($array);
$z = prev($array);
Это более эффективно, чем ваше решение, потому что оно зависит от внутреннего указателя массива. Ваше решение делает необработанную копию массива.
Я часто использую следующее, чтобы получить второе в последнем значении в массиве:
$z=array_pop(array_slice($array,-2,1));
Мне не хватает функции php, чтобы сделать это за один раз или это лучшее, что у меня есть?
end($array);
$z = prev($array);
Это более эффективно, чем ваше решение, потому что оно зависит от внутреннего указателя массива. Ваше решение делает необработанную копию массива.
Для числовых индексированных последовательных массивов попробуйте $z = $array[count($array)-2];
Изменить: для более общей опции просмотрите ответ Artefecto.
Или здесь, должен работать.
$reverse = array_reverse( $array );
$z = $reverse[1];
Я использую это, если мне это нужно:)