Главная страница
    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.004 c
15-1245435055
AlexDan
2009-06-19 22:10
2009.08.23
Инетрнет-магазин


8-1196707594
_alex_
2007-12-03 21:46
2009.08.23
Декомпрессоры


2-1245692591
Новичок
2009-06-22 21:43
2009.08.23
Что делаю не так?


2-1245226924
девушка
2009-06-17 12:22
2009.08.23
Вызов ХП из FastReport


15-1245338304
Tirael
2009-06-18 19:18
2009.08.23
скорость игрушки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский