นี่ไม่ใช่การตอบสนองง่ายๆในโลกแห่งความเป็นจริง สมมติว่าเรามีตัวอย่างของคำตอบที่เป็นไปได้ที่คุณสามารถหาได้ในห้องสมุดบางแห่ง
$array1 = array();
$array2 = array(1,2,3,4);
$array3 = array('hello'=>'world', 'foo'=>'bar');
$array4 = null;
var_dump('reset1', reset($array1));
var_dump('reset2', reset($array2));
var_dump('reset3', reset($array3));
var_dump('reset4', reset($array4)); // Warning
var_dump('array_shift1', array_shift($array1));
var_dump('array_shift2', array_shift($array2));
var_dump('array_shift3', array_shift($array3));
var_dump('array_shift4', array_shift($array4)); // Warning
var_dump('each1', each($array1));
var_dump('each2', each($array2));
var_dump('each3', each($array3));
var_dump('each4', each($array4)); // Warning
var_dump('array_values1', array_values($array1)[0]); // Notice
var_dump('array_values2', array_values($array2)[0]);
var_dump('array_values3', array_values($array3)[0]);
var_dump('array_values4', array_values($array4)[0]); // Warning
var_dump('array_slice1', array_slice($array1, 0, 1));
var_dump('array_slice2', array_slice($array2, 0, 1));
var_dump('array_slice3', array_slice($array3, 0, 1));
var_dump('array_slice4', array_slice($array4, 0, 1)); // Warning
list($elm) = $array1; // Notice
var_dump($elm);
list($elm) = $array2;
var_dump($elm);
list($elm) = $array3; // Notice
var_dump($elm);
list($elm) = $array4;
var_dump($elm);
อย่างที่คุณเห็นเรามีโซลูชัน 'หนึ่งบรรทัด' หลายตัวที่ทำงานได้ดีในบางกรณี แต่ไม่ใช่ในทุกกรณี
ในความคิดของฉันคุณควรจัดการกับอาร์เรย์เท่านั้น
ตอนนี้พูดคุยเกี่ยวกับประสิทธิภาพการทำงานสมมติว่าเรามีอาร์เรย์เสมอเช่นนี้
$elm = empty($array) ? null : ...($array);
...you would use without errors:
$array[count($array)-1];
array_shift
reset
array_values
array_slice
array_shift
จะเร็วกว่าreset
, ที่มีมากขึ้นอย่างรวดเร็วกว่า [นับ () - 1] และที่สามเหล่านี้จะเร็วกว่าและarray_values
array_slice