Есть ли в любом случае прямой доступ к данным, возвращаемым в массиве без временной переменной?
В настоящее время мой код выглядит следующим образом:
function getData($id) { // mysql query return mysql_fetch_array($result); } $data = getData($id); echo $data['name'];
Есть ли прямой способ получить возвращаемые данные без временной переменной?
PHP 5.4 добавлен массив разыменования, вот пример из документации массива PHP:
Пример # 7 Разделение разворота
function getArray() { return array(1, 2, 3); } // on PHP 5.4 $secondElement = getArray()[1]; // previously $tmp = getArray(); $secondElement = $tmp[1];
с массивами ответ отрицательный, но вы можете использовать объекты:
function getData($id) { // mysql query return mysql_fetch_object($result); } echo getData($id)->name;
На самом деле, нет. Вы могли бы определить функцию, чтобы сделать это, хотя:
function array_value($array, $key) { return $array[$key]; } // and then echo array_value(getData($id), 'name');
Единственный другой способ, который, вероятно, не поможет вам в этом случае, – это использовать list()
который даст вам первые n
элементов в возвращаемом массиве. Вы должны заранее знать порядок позиций в списке:
function test() { return array(1, 2, 3, 4); } list($one, $two, $three) = test(); // now $one is 1, $two is 2, $three is 3
Некоторое время назад я задал аналогичный вопрос .
Короткий ответ – нет, вы не можете. Тем не менее, если вам просто нужно первое значение в массиве, вы можете использовать reset ():
function getArray() { array('la', 'li', 'lu'); } echo reset(getArray()); // echos "la"
К сожалению нет.
Вы могли бы сделать что-то вроде этого:
function getData($id) { // mysql query return mysql_fetch_array($result); } foreach(getData("your_input_query") as $key=>$value){ echo $value; }
И тогда вы можете использовать оператор switch или if / else для выполнения других функций возвращаемых данных, если они равны определенному значению (в этом случае, если $ key == 'name').
Короче говоря, гораздо проще просто установить эту временную переменную и получить доступ к ней таким образом.
Я думаю, что этот вопрос немного неверен для вашего вопроса, но я думаю, что вы хотите сделать что-то вроде этого:
echo getData($id)->someArrayOffset;
Хотя вы можете сделать это с помощью mysql_fetch_object, я покажу вам, как вы можете это сделать, используя ArrayObject в PHP5 или возвращая свой собственный объект на PHP 4, чтобы вы могли найти полезность для него вне функции, возвращающей объекты для вас. Вот ваша функция, использующая ArrayObject в PHP5:
function getData($id) { // mysql query return new ArrayObject( mysql_fetch_array($result) ); } echo getData($id)->name;