Re: Return an Array and immediately reference an index

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bojan Tesanovic wrote:

On Apr 12, 2008, at 12:33 AM, Daniel Kolbo wrote:

Hello,

I want to return an array from function and reference an index all in one line. Is this possible?

In the code below I want I want $yo to be the array(5,6).

Here is what I've tried,

function returnarray() {
    return array('lose' => array(5,6), 'win' => array(9,8));
}

$yo = returnarray()['lose'];
var_dump($yo);

This yields a parse error.

function returnarray() {
    return array('lose' => array(5,6), 'win' => array(9,8));
}

$yo = {returnarray()}['lose'];
var_dump($yo);

This yields a parse error.

function returnarray() {
    return array('lose' => array(5,6), 'win' => array(9,8));
}

$yo = ${returnarray()}['lose'];
var_dump($yo);

This gives notices as the result of returnarray() is being converted to a string. $yo === NULL...not what i want.

function returnarray() {
    return array('lose' => array(5,6), 'win' => array(9,8));
}

$yo = returnarray()->['lose'];
var_dump($yo);

This yields a parse error.

function returnarray() {
    return array('lose' => array(5,6), 'win' => array(9,8));
}

$yo = ${returnarray()}->['lose'];
var_dump($yo);

This yields a parse error.

Thanks for your help in advance.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




This is not possible in PHP, though you can have a Array wrapper class

function returnarray() {
return new ArrayObject( array('lose' => array(5,6), 'win' => array(9,8)) );
}
var_dump (returnarray()->offsetGet('lose'));


or even better make you own wrapper class with __set() and __get() methods so you can have

var_dump (returnarray()->lose);

of course only in PHP5

Well, not quite so fast saying this is only possible in PHP5

You could do something like this.

<?php

function returnHash() {
  return (object) array('lose' => array(5,6), 'win' => array(9,8));
}

print_r(returnHash()->lose);

?>

Basically, this converts your newly built array into an object, using the stdClass object.

Then reference the index via an object variable name instead of an array style access method.





Bojan Tesanovic
http://www.carster.us/








--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux