Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
PHP: доступ к значению массива на лету
В php мне часто приходится сопоставлять переменную с помощью массива ... но я не могу, кажется, быть в состоянии сделать это в одном лайнере. c.f. образец:
// the following results in an error:
echo array('a','b','c')[$key];
// this works, using an unnecessary variable:
$variable = array('a','b','c');
echo $variable[$key];
Это небольшая проблема, но она продолжает беспокоить время от времени ... Мне не нравится тот факт, что я использую переменную просто так ;)
Технический ответ заключается в том, что Grammar языка PHP допускает только подстрочную нотацию в конце переменных выражений , а не выражений вообще, как это работает в большинстве других языков. Я всегда рассматривал это как недостаток в языке, потому что можно иметь grammar, который однозначно разрешает нижние индексы против любого выражения. Однако это может быть так, что они используют негибкий генератор синтаксического анализа или просто не хотят нарушать какую-то обратную совместимость.
Вот еще несколько примеров недопустимых индексов для допустимых выражений:
$x = array(1,2,3);
print ($x)[1]; //illegal, on a parenthetical expression, not a variable exp.
function ret($foo) { return $foo; }
echo ret($x)[1]; // illegal, on a call expression, not a variable exp.
Это называется разыменованием массива. Он был добавлен в php 5.4. http://www.php.net/releases/NEWS_5_4_0_alpha1.txt
update[2012-11-25]: начиная с PHP 5.5, разыменование было добавлено к контантам / строкам, а также массивам
Я бы не стал беспокоиться об этой дополнительной переменной, правда. Если вы хотите, однако, вы также можете удалить его из памяти после того, как вы его использовали:
$variable = array('a','b','c');
echo $variable[$key];
unset($variable);
Или же вы можете написать небольшую функцию:
function indexonce(&$ar, $index) {
return $ar[$index];
}
и назовем это с помощью:
$something = indexonce(array('a', 'b', 'c'), 2);
Теперь массив должен быть уничтожен автоматически.
Это может быть не связано напрямую.. Но я пришел на этот пост, чтобы найти решение этой конкретной проблемы.
Я получил результат от функции в следующем виде.
Array
(
[School] => Array
(
[parent_id] => 9ce8e78a-f4cc-ff64-8de0-4d9c1819a56a
)
)
то, что я хотел, было значением parent_id "9ce8e78a-f4cc-ff64-8de0-4d9c1819a56a". Я использовал эту функцию вот так и получил ее.
array_pop( array_pop( the_function_which_returned_the_above_array() ) )
Итак, все было сделано в одну линию :) Надеюсь, это будет кому-то полезно.
Есть несколько oneliners , которые вы могли бы придумать, используя функции php array_* . Но я уверяю вас, что делать это совершенно излишне, сравнивая то, что вы хотите достичь.
Пример вы можете использовать что-то вроде следующего, но это не элегантное решение, и я не уверен в производительности этого;
array_pop ( array_filter( array_returning_func(), function($key){ return $key=="array_index_you_want"? TRUE:FALSE; },ARRAY_FILTER_USE_KEY ) );
если вы используете фреймворк php и застряли с более старой версией php, большинство фреймворков имеет библиотеки помощи.
пример: Codeigniter помощники массива
хотя тот факт, что разыменование было добавлено в PHP >=5.4, вы могли бы сделать это в одной строке, используя тернарный оператор:
echo $var=($var=array(0,1,2,3))?$var[3]:false;
таким образом, вы не держите массив только переменной. и вам не нужны дополнительные функции, чтобы сделать it...If эта строка используется в функции, она будет автоматически уничтожена в конце, но вы также можете уничтожить ее сами, как было сказано с unset позже в коде, если она не используется в функции.