[php] Funkcja zwracająca array

0

Takiego małego tipsa potrzebuję.

Mam funkcję, która zwraca arraya:

Array("a","b","c","d");

Powiedzmy, że chciałbym mieć możliwość przypisania zmiennej od razu któregoś elementu z takiego arraya. Mniejsza o to, po co, ale jak skonstruować takie coś? Nie chcę inicjować niepotrzebnie dodatkowych zmiennych. Próba typu

$zmienna = ${Array("a","b","c","d")}[1];

nie działa, w sumie to nie mam innych pomysłów. Help! :)

0

Eee... Jeśli funkcja o nazwie przykładowo daj_mi_tablice zwraca tablicę, to raczej powinno być:

$zmienna = daj_mi_tablice()[1];

A jakbyś chciał to napisać tak wprost, bez użycia funkcji (co byłoby raczej bez sensu), to czy nie zadziała po prostu tak?

$zmienna = array('a', 'b', 'c', 'd')[1];

Te dziwne esy-floresy nie są raczej konieczne :).

0

@bswierczynski: Tak nakazuje rozum, też tak bym chętnie napisał, ale nie zadziała. Czemu? Bo to PHP ;-)

<?php
        function get_array()
        {
                return array(1, 2, 3);
        }

        echo get_array()[1];
?>

PHP Parse error: syntax error, unexpected '[', expecting ',' or ';' in /home/ktos/- on line 7

Jest to niebywale wkurzająca rzecz - mam sporo funkcji w projekcie, które zwracają często jednoelementową tablicę. Po prostu robię głupie kombinacje w rodzaju:

$blog_data = $blog->get_blog();
$blog_data = $blog_data[0];

Liczę, ze w PHP6 poprawią, ale chyba się przeliczę...

0

@Ktoś: a ja myślę że w php6 typ array zostanie zamieniony na obiekt, coś w stylu tego (tzn mozna powiedzieć ze juz jest):

<?php
function testarray(){
return (object) array('foo' => 'bar', 'property' => 'value');
}
echo testarray()->foo;

?>

Bo po co by tworzyli klasę http://www.php.net/manual/en/class.arrayobject.php

1 użytkowników online, w tym zalogowanych: 0, gości: 1