Я раньше использовал их все время, теперь редко. Однако я делаю весь свой доступ к данным через хранимые процедуры, таким образом, полноценность представления несколько меньше, так как SP может скрыть сложность соединения при необходимости.
я все еще рассмотрел бы использование представления, если бы имел особенно сложный присоединенный многих таблиц, из которых я должен был тогда создать многих SP сверху, но честно говоря, я не могу думать ни о ком, которого я имею в производстве прямо сейчас.
другой сценарий был бы я использовать, можно было бы быть то, где у моих пользователей есть доступ к базе данных для генерации их собственных отчетов, и я хотел скрыть базовую сложность для них.
с массивами ответ отрицательный , но вы можете использовать объекты:
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"
Я думаю, что эта фраза немного неверна для вашего вопроса, но я думаю, что вы хотите добиться чего-то вроде этого:
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;
К сожалению, нет.
Вы можете сделать что-то вроде этого:
function getData($id) {
// mysql query
return mysql_fetch_array($result);
}
foreach(getData("your_input_query") as $key=>$value){
echo $value;
}
А затем вы можете использовать переключатель или операторы if / else только для выполнения других функций с возвращенными данными, если они равно определенному значению (в данном случае, если $ key == 'name').
Короче говоря, гораздо проще просто установить эту временную переменную и получить к ней доступ таким образом.