On Apr 11, 2008, at 6:31 PM, Daniel Kolbo wrote:

Philip Thompson wrote:
Top-posting side comment: It's not nice to hijack threads.
My comments are below...
On Apr 11, 2008, at 5:33 PM, 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.
Perhaps these pages may assist you:
http://php.net/manual/en/function.array.php
http://php.net/functions
For more immediate help, I think you want to do something along these lines:
<?php
function returnArray ($index) {
   $arr = array('lose'=>array(5,6), 'win'=>array(9,8));
   return isset ($arr[$index]) ? $arr[$index] : 'Index not found';
}
$returnTheValueForThis = 'lose';
$result = returnArray ($returnTheValueForThis);
var_dump ($result);
?>
This var_dump will return:
array(2) { [0]=>  int(5) [1]=>  int(6) }
Hope that helps. Do some more reading in the manual to help yourself out. ;)
~Philip

Just to be sure, where you saying I hijacked a thread? If so, please educate me as to how i did this. Now to the response.

If you are viewing a message (in this case, the thread entitled "Quarters -- ERRORS --") and you hit Reply and change the message to whatever (in this case, "Return an Array and immediately reference an index"), it still shows up in the same "thread" as the Quarters one. This implies that your email has to do with the Quarters one... but it really doesn't. =D

So, in order to fix this, just hit "New" instead of Reply. =D No harm done, just good listserv netiquette for people reading their emails that shove the *same content* emails together. We're all here to learn, right.


Thanks for the response.

I am familiar with the construction and returning of the arrays and referencing an index of the array. I understand your code. However, this is not what I am trying to do.

I could simply do:

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

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

To get my desired result.

I was just seeing if PHP had the capability to combine those last two lines into one. I realize the function itself is rather trivial, but just wanted some function to return an array for the sake of demonstration.

Thanks,

Oooooooh. I see what you're saying now. Sorry for the confusion. To my knowledge (which is limited ;), I don't think you can do that. This is somewhat similar to some desired functionality in PHP - I don't remember the name of it. For example,

<?php
class f1() {
  function f2() {
    echo "Hello";
  }

  function f3() {
    echo "World!";
  }
}

new f1()->f2() . new f1()->f3();
?>

Something like that. Basically, call a class/function and get the contents directly without instantiating it first. Maybe others have an opinion on this....

~Philip

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

Reply via email to