Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.23;
Скачать: CL | DM;

Вниз

Первый элемент массива PHP?   Найти похожие ветки 

 
My_name   (2009-06-22 18:01) [0]

Интересует как достать первый элемент массива в PHP, если он(массив) начинается не с 0 элемента, допустим ассоциативный? Первое что приходит на ум мне:

foreach ( $array as $element ) {
  $firstElement = $element; break;
}

Но наверняка есть ведь способ и поумней?)


 
clickmaker ©   (2009-06-22 18:11) [1]

$array[array_keys($array)[0]]


 
McSimm ©   (2009-06-22 18:19) [2]

reset(); current();


 
palva ©   (2009-06-22 19:11) [3]


> $array[array_keys($array)[0]]

Хитро. Тогда уж лучше array_values($array)[0]
Только одним оператором без промежуточной переменной это тоже не заработает (почему-то).
Надо так:
$a=array_values($array);
$v= $a[0];

Лучший способ (ИМХО) указал McSimm


 
My_name   (2009-06-22 19:14) [4]

current() написано вернет FALSE даже если элемент массива ( "", 0 ) php.net рекомендует использовать each()...


 
palva ©   (2009-06-22 19:30) [5]


> current() написано вернет FALSE

Брешут. Проверьте:
$array = array(3=>"", 5=>55, "a"=>"aa");
reset($array);
echo gettype(current($array)); // string

Другое дело, если первый элемент массива FALSE, тогда действительно вы не сможете отличить то ли массив пустой, то ли первый элемент равен FALSE. Но даже и тогда менее затратно проверить ключ функцией key. Поскольку each возвращает массив из четырех элементов (на все случаи жизни).


 
palva ©   (2009-06-22 19:53) [6]

Поясню. Ключ всегда число или строка. Поэтому проверяя то, что вернет key на NULL вы поймете, что находитесь вне массива (массив пустой).

Даже если вы попробуете создать массив с ключом NULL он будет заменен на пустую строку:

$array = array(NULL=>FALSE, 5=>55, "a"=>"aa");
$array[""]=33;
reset($array);
echo gettype(key($array))."\n"; // string;
echo current($array)."\n"; // 33;
$array = array();
reset($array);
echo is_null(key($array))."\n"; // 1


 
Дмитрий С ©   (2009-06-23 10:00) [7]

reset($arr)
if (list($dummy, $value)=each($arr)) {
:)
}


 
test ©   (2009-06-23 10:02) [8]

А разве в PHP нет ?
for each elem in list do



Страницы: 1 вся ветка

Текущий архив: 2009.08.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
3-1226318508
Барра Кабамма
2008-11-10 15:01
2009.08.23
TADOCommand + MSSQL + SP


15-1245920008
Артур Пирожков
2009-06-25 12:53
2009.08.23
Кто-нить пользуется браузером Safari?


3-1226469214
matveih1
2008-11-12 08:53
2009.08.23
Загрузке картинки в DBImage из БД


2-1245759052
@!!ex
2009-06-23 16:10
2009.08.23
Продублировать Control на двух TabSheet


15-1245919589
test
2009-06-25 12:46
2009.08.23
Обфускация