Мне нужно вернуть несколько значений из функции, поэтому я добавил их в массив и вернул массив.
<? function data(){ $a = "abc"; $b = "def"; $c = "ghi"; return array($a, $b, $c); } ?>
Как получить значения $a
, $b
, $c
, вызвав указанную выше функцию?
Вы можете добавить ключи массива к своим возвращаемым значениям, а затем использовать эти клавиши для печати значений массива, как показано ниже:
function data() { $out['a'] = "abc"; $out['b'] = "def"; $out['c'] = "ghi"; return $out; } $data = data(); echo $data['a']; echo $data['b']; echo $data['c'];
вы можете сделать это:
list($a, $b, $c) = data(); print "$a $b $c"; // "abc def ghi"
function give_array(){ $a = "abc"; $b = "def"; $c = "ghi"; return compact('a','b','c'); } $my_array = give_array();
Функция данных возвращает массив, поэтому вы можете получить доступ к результату функции так же, как вы обычно обращаетесь к элементам массива:
<?php ... $result = data(); $a = $result[0]; $b = $result[1]; $c = $result[2];
Или вы можете использовать функцию list()
, как рекомендует @fredrik, сделать то же самое в строке.
$array = data(); print_r($array);
Из PHP 5.4 вы можете воспользоваться разыменованием массивов и сделать что-то вроде этого:
<? function data() { $retr_arr["a"] = "abc"; $retr_arr["b"] = "def"; $retr_arr["c"] = "ghi"; return $retr_arr; } $a = data()["a"]; //$a = "abc" $b = data()["b"]; //$b = "def" $c = data()["c"]; //$c = "ghi" ?>
вот лучший способ в подобной функции
function cart_stats($cart_id){ $sql = "select sum(price) sum_bids, count(*) total_bids from carts_bids where cart_id = '$cart_id'"; $rs = mysql_query($sql); $row = mysql_fetch_object($rs); $total_bids = $row->total_bids; $sum_bids = $row->sum_bids; $avarage = $sum_bids/$total_bids; $array["total_bids"] = "$total_bids"; $array["avarage"] = " $avarage"; return $array; }
и вы получите данные массива, подобные этому
$data = cart_stats($_GET['id']); <?=$data['total_bids']?>
<?php function demo($val,$val1){ return $arr=array("value"=>$val,"value1"=>$val1); } $arr_rec=demo(25,30); echo $arr_rec["value"]; echo $arr_rec["value1"]; ?>
Это то, что я сделал в yii framewok:
public function servicesQuery($section){ $data = Yii::app()->db->createCommand() ->select('*') ->from('services') ->where("section='$section'") ->queryAll(); return $data; }
затем внутри моего файла вида:
<?php $consultation = $this->servicesQuery("consultation"); ?> ?> <?php foreach($consultation as $consul): ?> <span class="text-1"><?php echo $consul['content']; ?></span> <?php endforeach;?>
То, что я делаю, захватывает кретиновую часть таблицы, которую я выбрал. должен работать только за php минус путь «Yii» для db
Основная проблема связана с доступом к данным в массиве, как указывает Felix Kling в первом ответе.
В следующем коде я получил доступ к значениям массива с помощью конструкций print и echo.
function data() { $a = "abc"; $b = "def"; $c = "ghi"; $array = array($a, $b, $c); print_r($array);//outputs the key/value pair echo "<br>"; echo $array[0].$array[1].$array[2];//outputs a concatenation of the values } data();
Я думаю, что лучший способ сделать это – создать глобальный массив var. Затем сделайте все, что вы хотите, внутри данных функции, передав его как ссылку. Не нужно ничего возвращать.
$array = array("white", "black", "yellow"); echo $array[0]; //this echo white data($array); function data(&$passArray){ //<<notice & $passArray[0] = "orange"; } echo $array[0]; //this now echo orange