utpakking en rekke argumenter i php

stemmer
23

Python gir * operatør for utpakking en liste over tupler og gi dem til en funksjon som argumenter, som så:

args = [3, 6]
range(*args)            # call with arguments unpacked from a list

Dette tilsvarer:

range(3, 6)

Vet noen om det er en måte å oppnå dette i PHP? Noen googling for varianter av PHP Pakk har ikke umiddelbart dukket opp noe .. kanskje det heter noe annet i PHP?

Publisert på 16/11/2008 klokken 20:05
kilden bruker
På andre språk...                            


5 svar

stemmer
22

Du kan bruke call_user_func_array()for å oppnå dette:

call_user_func_array("range", $args); å bruke ditt eksempel.

Svarte 16/11/2008 kl. 20:08
kilden bruker

stemmer
4

Du bør bruke call_user_func_array

call_user_func_array(array(CLASS, METHOD), array(arg1, arg2, ....))

http://www.php.net/call_user_func_array

eller bruke refleksjonen api http://www.php.net/oop5.reflection

Svarte 16/11/2008 kl. 20:15
kilden bruker

stemmer
13

I php5.6den ...operatør har blitt lagt til. Ved hjelp av det, kan du bli kvitt call_user_func_array()for enklere alternativ. For eksempel har en funksjon

function add($a, $b){
  return $a + $b;
}

og array $list = [4, 6];(etter php5.5 kan du erklære arrays på denne måten). Du kan ringe funksjon med ...:

echo add(...$list);

Svarte 19/04/2014 kl. 00:14
kilden bruker

stemmer
2

I visse situasjoner kan du vurdere å bruke unpacking, noe som er mulig i php, er en lignende måte å python:

list($min, $max) = [3, 6];
range($min, $max);

Dette er hvordan jeg har kommet til dette svaret minst. Google søk:PHP argument unpacking

Svarte 04/09/2015 kl. 15:22
kilden bruker

stemmer
0
<?php

function add(int ...$arr) {           // typehint ready
    return array_sum($arr);
}

var_dump(add(1, 2, 3, ...[1, 2, 3])); // int(12)

Et annet eksempel med ... - operatør.
RFC: https://wiki.php.net/rfc/variadics

Svarte 08/10/2019 kl. 15:52
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more