web-dev-qa-db-ja.com

PHP関数は配列を返します

関数から複数の値を返す必要があるため、それらを配列に追加し、配列を返しました。

<?

function data(){

$a = "abc";
$b = "def";
$c = "ghi";

return array($a, $b, $c);
}


?>

上記の関数を呼び出して、$a$b$cの値を受け取るにはどうすればよいですか?

70
Ajay

以下に示すように、配列キーを戻り値に追加し、これらのキーを使用して配列値を印刷できます。

function data() {
    $out['a'] = "abc";
    $out['b'] = "def";
    $out['c'] = "ghi";
    return $out;
}

$data = data();
echo $data['a'];
echo $data['b'];
echo $data['c'];
95

あなたはこれを行うことができます:

list($a, $b, $c) = data();

print "$a $b $c"; // "abc def ghi"
50
fredrik
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

22
ITS Alaska

データ関数は配列を返しているため、通常は配列の要素にアクセスするのと同じ方法で関数の結果にアクセスできます。

<?php
...
$result = data();

$a = $result[0];
$b = $result[1];
$c = $result[2];

または、@ fredrikが推奨するように、list()関数を使用して、同じことを1行で行うこともできます。

14
Nick
$array  = data();

print_r($array);
6
Headshota

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"
?>
5
Obinwanne Hill
<?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"];
?>
4
mohd jagir

各変数の値を取得するには、関数を配列と同様に扱う必要があります。

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;
2
user3589574

これは同様の機能の最良の方法です

 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']?>
2
Mohamed Badr

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();
1

たぶんこれはあなたが検索したものです:

function data() {
    // your code
    return $array; 
}
$var = data(); 
foreach($var as $value) {
    echo $value; 
}
1
Houssem

これは私が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からdbの「Yii」方法を除いたもので動作するはずです

1
Erik Leath
$data = data(); 
$a = $data[0];
$b = $data[1];
$c = $data[2];
1
bodesam

それを行う最良の方法は、グローバル変数配列を作成することだと思います。次に、参照として渡すことにより、関数データ内で必要な処理を実行します。何も返す必要もありません。

$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
0
Khalid