//sample Pseudo Code
function djikstra($source, $destination){
//after some computations....
return $distance_taken, $path;
}
$distance_taken
是一个整数,$path
是一个数组。
答案 0 :(得分:3)
您无法返回多个值。但是你可以返回一个数组:
function djikstra($source, $destination){
//after some computations....
return [$distance_taken, $path];
}
因此,当您调用此函数时,您可以使用list
来获取值:
list($distance_taken, $path) = djikstra($source, $destination);
答案 1 :(得分:1)
您只需返回一个值或不返回值
using System;
using System.Linq;
using System.Reflection;
namespace ConsoleApplication2
{
public static class Files
{
public const string FileA = "Block1";
public const string FileB = "Block2";
public const string FileC = "Block3";
public const string FileD = "Block6.Block7";
}
internal class Program
{
private static void Main(string[] args)
{
var t = typeof(Files);
var fields = t.GetFields(BindingFlags.Static | BindingFlags.Public);
var list = fields.Select(x => new {Field = x.Name, Value = x.GetValue(null).ToString()});
Console.Read();
}
}
}
然后通过
访问它们return array('distance_token' => $distance_taken, 'path' => $path);
答案 2 :(得分:1)
一个函数总是返回一种类型。如果变量的类型相同,则可以使用数组。
但最好的方法是创建一个Object
<?php
class DikjstraObj {
var $source;
var $destination;
function __construct($source, $destination) {
$this->source = $source;
$this->destination = $destination;
}
}
// ///////////////
// in your function simply do
function djikstra($source, $destination){
//after some computations....
$dObj = new DikjstraObj($source, $destination);
return $dObj ;
}
答案 3 :(得分:0)
使用Array
return array('distance_taken' => $distance_taken, 'path' => $path);
使用JSON
return json_encode(array('distance_taken' => $distance_taken, 'path' => $path));
答案 4 :(得分:0)
你基本上不能,但你可以创建一个班级。 PHP文档:http://php.net/manual/en/language.oop5.php
答案 5 :(得分:0)
好的,因为我们无法参考,我也给出了答案,并总结了其他商品:
C
指针一样)Reference。这是C语言的工作方式,可以提高大变量操作的性能。
要使用引用,您只需在&
函数参数前加$
:
<?
function djikstra(&$source, &$destination){
//after some computations....
$source = 'new val 1';
$destination = 'new val 2';
// return can be omited or used to handle & return error
return ;
}
// init
$source = 'default val 1';
$destination = 'default val 2';
// will change the val on the fly
djikstra($source, $destination);
// will print "new val 1 - new val 2"
echo $source. ' - ' .$destination;
其他商品方式:
正如@Thamilan所说,这可能是最常见的方式。
您无法返回多个值。但是你可以返回一个数组:
function djikstra($source, $destination){ //after some computations.... return [$distance_taken, $path]; // or `return array($distance_taken, $path)` }
因此,当您调用此函数时,您可以使用
list
来获取 值:list($distance_taken, $path) = djikstra($source, $destination);
Nb:小心使用list()
,这是一个棘手的功能,请阅读文档
如果您已经使用Oriented Object样式进行编码,那么@Topsy也是一个很好的方法,因为您必须将函数应用于完整对象并期望返回完整的修改对象。
如果您在程序中工作,请避免这种情况并转到#1或#2。
一个函数总是返回一种类型。你可以使用数组 变量是相同的类型。
但最好的方法是创建一个Object
<?php class DikjstraObj { var $source; var $destination; function __construct($source, $destination) { $this->source = $source; $this->destination = $destination; } } // /////////////// // in your function simply do function djikstra($source, $destination){ //after some computations.... $dObj = new DikjstraObj($source, $destination); return $dObj ; }