Получите доступ к массиву, возвращенному функцией [дубликат]

Я раньше использовал их все время, теперь редко. Однако я делаю весь свой доступ к данным через хранимые процедуры, таким образом, полноценность представления несколько меньше, так как SP может скрыть сложность соединения при необходимости.

я все еще рассмотрел бы использование представления, если бы имел особенно сложный присоединенный многих таблиц, из которых я должен был тогда создать многих SP сверху, но честно говоря, я не могу думать ни о ком, которого я имею в производстве прямо сейчас.

другой сценарий был бы я использовать, можно было бы быть то, где у моих пользователей есть доступ к базе данных для генерации их собственных отчетов, и я хотел скрыть базовую сложность для них.

6
задан Jordan Satok 2 November 2009 в 23:24
поделиться

5 ответов

с массивами ответ отрицательный , но вы можете использовать объекты:

function getData($id) {
   // mysql query
   return mysql_fetch_object($result);
}

echo getData($id)->name;
4
ответ дан 8 December 2019 в 12:20
поделиться

Не совсем. Однако вы можете определить функцию для этого:

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
3
ответ дан 8 December 2019 в 12:20
поделиться

Некоторое время назад я задал аналогичный вопрос .

Короткий ответ - нет, нельзя. Тем не менее, если вам просто нужно первое значение в массиве, вы можете использовать reset ():

function getArray()
{
    array('la', 'li', 'lu');
}
echo reset(getArray()); // echos "la"
1
ответ дан 8 December 2019 в 12:20
поделиться

Я думаю, что эта фраза немного неверна для вашего вопроса, но я думаю, что вы хотите добиться чего-то вроде этого:

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;
0
ответ дан 8 December 2019 в 12:20
поделиться

К сожалению, нет.

Вы можете сделать что-то вроде этого:

function getData($id) {
    // mysql query
    return mysql_fetch_array($result);
}

foreach(getData("your_input_query") as $key=>$value){
   echo $value;
}

А затем вы можете использовать переключатель или операторы if / else только для выполнения других функций с возвращенными данными, если они равно определенному значению (в данном случае, если $ key == 'name').

Короче говоря, гораздо проще просто установить эту временную переменную и получить к ней доступ таким образом.

0
ответ дан 8 December 2019 в 12:20
поделиться