Возвращаемый массив функций PHP
Мне нужно вернуть несколько значений из функции, поэтому я добавил их в массив и вернул массив.
<?
function data(){
$a = "abc";
$b = "def";
$c = "ghi";
return array($a, $b, $c);
}
?>
Как я могу получить значения $a
, $b
, $c
, вызывая указанную выше функцию?
Ответы
Ответ 1
Вы можете добавить ключи массива к своим возвращаемым значениям, а затем использовать эти клавиши для печати значений массива, как показано ниже:
function data() {
$out['a'] = "abc";
$out['b'] = "def";
$out['c'] = "ghi";
return $out;
}
$data = data();
echo $data['a'];
echo $data['b'];
echo $data['c'];
Ответ 2
вы можете сделать это:
list($a, $b, $c) = data();
print "$a $b $c"; // "abc def ghi"
Ответ 3
function give_array(){
$a = "abc";
$b = "def";
$c = "ghi";
return compact('a','b','c');
}
$my_array = give_array();
http://php.net/manual/en/function.compact.php
Ответ 4
Функция данных возвращает массив, поэтому вы можете получить доступ к результату функции так же, как если бы вы обычно обращались к элементам массива:
<?php
...
$result = data();
$a = $result[0];
$b = $result[1];
$c = $result[2];
Или вы можете использовать функцию list()
, как рекомендует @fredrik, сделать то же самое в строке.
Ответ 5
$array = data();
print_r($array);
Ответ 6
Из 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"
?>
Ответ 7
<?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"];
?>
Ответ 8
вот лучший способ в подобной функции
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']?>
Ответ 9
Это то, что я сделал внутри 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;?>
То, что я делаю, захватывает часть cretin таблицы, которую я выбрал. должен работать только для php минус путь "Yii" для db
Ответ 10
Основная проблема связана с доступом к данным в массиве, как указывает Felix Kling в первом ответе.
В следующем коде я получил доступ к значениям массива с конструкциями печати и эха.
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();
Ответ 11
Чтобы получить значения каждой переменной, вам нужно обращаться с функцией как с массивом:
function data() {
$a = "abc";
$b = "def";
$c = "ghi";
return array($a, $b, $c);
}
// Assign a variable to the array;
// I selected $dataArray (could be any name).
$dataArray = data();
list($a, $b, $c) = $dataArray;
echo $a . " ". $b . " " . $c;
//if you just need 1 variable out of 3;
list(, $b, ) = $dataArray;
echo $b;
Ответ 12
Я думаю, что лучший способ сделать это - создать глобальный массив 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
Ответ 13
Может быть, это то, что вы искали:
function data() {
// your code
return $array;
}
$var = data();
foreach($var as $value) {
echo $value;
}