//sample Pseudo Code
function djikstra($source, $destination){
//after some computations....
return $distance_taken, $path;
}
$distance_taken
— целое число, а $path
— массив.
//sample Pseudo Code
function djikstra($source, $destination){
//after some computations....
return $distance_taken, $path;
}
$distance_taken
— целое число, а $path
— массив.
Вы не можете вернуть более одного значения. Но вы можете вернуть массив:
function djikstra($source, $destination){
//after some computations....
return [$distance_taken, $path];
}
Поэтому, когда вы вызываете эту функцию, вы можете использовать list
для получения значений:
list($distance_taken, $path) = djikstra($source, $destination);
Вы можете просто вернуть одно значение или не вернуть его
return array('distance_token' => $distance_taken, 'path' => $path);
Затем получите доступ к ним с помощью
$result = djikstra($source, $destination);
$distance_taken = $result['distance_token'];
$path = $result['path'];
Функция всегда возвращает один тип. Вы можете использовать массив, если ваши переменные одного типа.
Но лучший способ сделать это - создать объект
<?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 ;
}
Вы не можете в принципе, но вы можете создать класс. Документация по PHP: http://php.net/manual/en/language.oop5.php
Используйте 1_
return array('distance_taken' => $distance_taken, 'path' => $path);
Используйте JSON
return json_encode(array('distance_taken' => $distance_taken, 'path' => $path));
Хорошо, так как мы не можем обойтись без ссылки, я тоже ставлю ответ и резюмирую другие хорошие:
C
)Справочник можно использовать, когда вы хотите напрямую работать с переменной без создание временной копии и возврат нового значения для удаления старого. Именно так работает язык 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);
Примечание: будьте осторожны с list()
, это сложная функция, прочитать документ
@Topsy также является хорошим способом, если вы уже кодируете в стиле ориентированного объекта, так как вам придется применить функцию к полному объекту и ожидать возврата полностью измененного объекта.
Избегайте этого и выберите вариант №1 или №2, если вы работаете в процедурной сфере.
Функция всегда возвращает один тип. Вы можете использовать массив, если ваши переменные одного типа.
Но лучший способ сделать это - создать объект
<?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 ; }
array
илиobject
илиjson
- person Ramalingam Perumal   schedule 05.01.2017