2011-08-03 11 views
22

Considere el siguiente conjuntoarray_pop() con Clave

$array = array('fruit'  => 'apple', 
       'vegetable' => 'potato', 
       'dairy'  => 'cheese'); 

que quería utilizar array_pop para conseguir la última clave/valor par.

sin embargo, se cuenta que después de la siguiente

$last = array_pop($array); 

var_dump($last); 

es la salida sólo el valor (string(6) "cheese")

¿Cómo puedo "pop" la última pareja de la matriz, la preservación de la llave/valor de la estructura de la matriz?

Respuesta

18

Salida array_slice()http://php.net/manual/en/function.array-slice.php

print_r(array_slice(array("a" => "1", "b" => 2, "c" => 3), -1, 1)); 
Array 
(
    [c] => 3 
) 
+2

, que hace de establecer conserva_llaves = cierto si las llaves son numéricos o puede que no ¡consigue el par que esperabas! –

+0

Esto funcionará pero al hacer una declaración en línea triple ya que el ejemplo puede ser confuso para los recién llegados, definitivamente no recomendamos esa parte en su código. – sricks

2

Esto debería funcionar, simplemente no hacerlo dentro de un bucle foreach (que va a estropear el bucle)

end($array); // set the array pointer to the end 
$keyvaluepair = each($array); // read the key/value 
reset($array); // for good measure 

Editar: Briedis sugiere array_slice(), que es probablemente una mejor solución

10

tratar

end($array); //pointer to end 
each($array); //get pair 
4

Puede utilizar end() y key() a la de la clave y el valor, entonces usted puede hacer estallar el valor.

$array = array('fruit' => 'apple', 'vegetable' => 'potato', 'dairy' => 'cheese'); 
$val = end($array); // 'cheese' 
        // Moves array pointer to end 
$key = key($array); // 'dairy' 
        // Gets key at current array position 
array_pop($array); // Removes the element 
        // Resets array pointer 
+0

Interesante, gracias, he usado esto hoy .. –

0

Prueba esto:

<?php 

function array_end($array) 
{ 
    $val = end($array); 
    return array(array_search($val, $array) => $val); 
} 

$array = array(
    'fruit' => 'apple', 
    'vegetable' => 'potato', 
    'dairy' => 'cheese' 
); 

echo "<pre>"; 
print_r(array_end($array)); 
?> 

Salida:

Array 
(
    [dairy] => cheese 
) 
0

Otra opción:

<?php 
end($array); 
list($key, $value) = each($array); 
array_pop($array); 
var_dump($key, $value); 
?> 
Cuestiones relacionadas