Главная страница
    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.007 c
3-1226317325
Valerik
2008-11-10 14:42
2009.08.23
Ошибка при записи в таблицу Access


15-1245517111
Инкогнито
2009-06-20 20:58
2009.08.23
Возможность получить подсказку


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


15-1245701175
matt
2009-06-23 00:06
2009.08.23
Помогите найти автора цикла книг


15-1245435055
AlexDan
2009-06-19 22:10
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский