Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.08.23;
Скачать: [xml.tar.bz2];

Вниз

Первый элемент массива 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.035 c
15-1245521182
Kerk
2009-06-20 22:06
2009.08.23
География


1-1212748708
Ольга
2008-06-06 14:38
2009.08.23
Компонента cxGrid (DevExpress)


15-1245752128
vajo
2009-06-23 14:15
2009.08.23
Глюк в сети. Подскажите.


15-1245777535
@!!ex
2009-06-23 21:18
2009.08.23
Подскажите литературу на тему реализации Кластеров


15-1245475073
TUser
2009-06-20 09:17
2009.08.23
Визбору - 75 !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский