Этот мог бы походить на глупый вопрос. Как я получаю 1-е значение массива, не зная заранее, ассоциативен ли массив или нет?
Для получения 1-го элемента массива я думавший сделать это:
function Get1stArrayValue($arr) { return current($arr); }
это в порядке? Это могло создать проблемы, если бы массив внутренний указатель был перемещен перед вызовом функции? Существует ли better/smarter/fatser способ сделать это?
Спасибо!
Лучшей идеей может быть использование reset, которая "перематывает внутренний указатель массива на первый элемент и возвращает значение первого элемента массива"
Пример:
function Get1stArrayValue($arr) { return reset($arr); }
Как отметил @therefromhere в комментарии ниже, это решение не идеально, поскольку оно изменяет состояние внутреннего указателя. Однако я не думаю, что это большая проблема, поскольку другие функции, такие как array_pop, также сбрасывают его.
Главное опасение, что ее нельзя использовать при итерации по массиву, не является проблемой, поскольку foreach
работает с копией массива. В руководстве PHP говорится:
Если массив не является ссылочным, foreach работает с копией указанного массива, а не с самим массивом.
Это можно показать с помощью простого тестового кода:
$arr = array("a", "b", "c", "d");
foreach ( $arr as $val ){
echo reset($arr) . " - " . $val . "\n";
}
Результат:
a - a
a - b
a - c
a - d
Чтобы получить первый элемент любого массива, вам нужно сначала сбросить указатель. http://ca3.php.net/reset
function Get1stArrayValue($arr) {
return reset($arr);
}
Возможно, по звуку необходимо перехватить WM _ PRINTCLIENT , подключившись к глобальной процедуре окна, если используется WM_PRINTCLIENT сообщение, просто вернуться из процедуры подключенного окна. Для получения подробной информации о WM _ PRINTCLIENT см. здесь. Другой способ сделать это - перехватить функции буфера обмена, где данные из конкретного приложения, а буфер обмена содержит растровое изображение.. Смотрите блог Ларри Остермана об этом . Вот статья на CodeProject , которая реализует глобальный крюк Windows, есть две другие ссылки, которые я могу предоставить здесь и здесь . (Все в CodeProject)
Надеюсь, что это поможет, С уважением, Том.
-121--3941983-log4j обработает инструкцию журнала и проверит, включен ли конкретный журнал на определенном уровне регистрации. Если это не так, то инструкция не будет записана в журнал.
Эти проверки значительно дешевле, чем фактическая запись на диск (или консоль), но они все еще оказывают влияние.
нет, java не имеет такого понятия, как # ifdef (в любом случае вне рамки, там есть предкомпилизаторы java)
Если вы не против потерять первый элемент из массива, вы также можете использовать
array _ shift ()
- сдвигает первое значение массива и возвращает его, сокращая Все ключи числового массива будут изменены, чтобы начать отсчет с нуля, в то время как ключи литерала не будут касаться.
Или можно обернуть массив в ArrayIterator и использовать seek
:
$array = array("foo" => "apple", "banana", "cherry", "damson", "elderberry");
$iterator = new ArrayIterator($array);
$iterator->seek(0);
echo $iterator->current(); // apple
Если это не вариант, используйте одно из других предложений.