FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Displaying an array value in two columns
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
Displaying an array value in two columns [message #185849] Mon, 12 May 2014 19:15 Go to next message
Dan Jacobs is currently offline  Dan Jacobs
Messages: 1
Registered: May 2014
Karma: 0
Junior Member
Hello all.

I am fairly new to PHP and have an interesting question concerning the
proper way to pass an array value from one division to another.
I have an array I am building "on the fly" so to say. Let's say it has 100
items in it. Inititally, there is only one dimension to the array. Then
later, I add a second dimension to that mainly to save time from having to
create a second array.
As an example, I have created $myarray[0]. On the second dimension I add
$myarray[0]['name'].
Here comes the problem. $myarray[0] prints and displays just fine in column
1 and column 2. $myarray[0]['name'] prints fine in column 1, but when
printed in column 2, I get an illegal offset error message. Is there
something I am missing to get $myarray[0]['name'] to print in column 2?

Thanks for any kind help.

Dan.
Re: Displaying an array value in two columns [message #185850 is a reply to message #185849] Mon, 12 May 2014 19:27 Go to previous messageGo to next message
Ben Bacarisse is currently offline  Ben Bacarisse
Messages: 82
Registered: November 2013
Karma: 0
Member
"Dan Jacobs" <Dan(dot)Jacobs(at)gmal(dot)com> writes:

> I am fairly new to PHP and have an interesting question concerning the
> proper way to pass an array value from one division to another.
> I have an array I am building "on the fly" so to say. Let's say it has
> 100 items in it. Inititally, there is only one dimension to the
> array. Then later, I add a second dimension to that mainly to save
> time from having to create a second array.

That sounds like an odd thing to do, and not a very good reason to do
it! How much time does it save?

> As an example, I have created $myarray[0]. On the second dimension I
> add $myarray[0]['name'].
> Here comes the problem. $myarray[0] prints and displays just fine in
> column 1 and column 2. $myarray[0]['name'] prints fine in column 1,
> but when printed in column 2, I get an illegal offset error
> message. Is there something I am missing to get $myarray[0]['name'] to
> print in column 2?

You'll have to post the code, or code that exhibits the same problem.
I, for one, can't work out what you are doing (let alone what you are
doing wrong) from this description.

--
Ben.
Re: Displaying an array value in two columns [message #185851 is a reply to message #185849] Mon, 12 May 2014 19:49 Go to previous messageGo to next message
Christoph Michael Bec is currently offline  Christoph Michael Bec
Messages: 207
Registered: June 2013
Karma: 0
Senior Member
Dan Jacobs wrote:

> I am fairly new to PHP and have an interesting question concerning the
> proper way to pass an array value from one division to another.
> I have an array I am building "on the fly" so to say. Let's say it has
> 100 items in it. Inititally, there is only one dimension to the array.
> Then later, I add a second dimension to that mainly to save time from
> having to create a second array.

Actually, PHP doesn't have multidimensional arrays; you can only
simulate them with arrays of arrays, so a "two-dimensional" array
consists of n+1 arrays, where n is the number of elements of the first
dimension.

If performance is *really* a concern, you're most likely better off to
use two separate arrays.

> As an example, I have created $myarray[0]. On the second dimension I add
> $myarray[0]['name'].
> Here comes the problem. $myarray[0] prints and displays just fine in
> column 1 and column 2. $myarray[0]['name'] prints fine in column 1, but
> when printed in column 2, I get an illegal offset error message. Is
> there something I am missing to get $myarray[0]['name'] to print in
> column 2?

The "second dimension" will overwrite whatever was stored in
$myarray[0], unless that was already an array in which case you'll add
or overwrite the element with the key "name". You would need to save
the original value of $myarray[0] in a new element, say "value", e.g.

$myarray[0]['value'] = $myarray[0];
$myarray[0]['name'] = $name;

However, that is a clumsy solution. It might be good, if you can
provide some code sample, as Ben already suggested.

--
Christoph M. Becker
Re: Displaying an array value in two columns [message #185852 is a reply to message #185849] Mon, 12 May 2014 20:00 Go to previous message
J.O. Aho is currently offline  J.O. Aho
Messages: 194
Registered: September 2010
Karma: 0
Senior Member
On 12/05/14 21:15, Dan Jacobs wrote:
> Hello all.
>
> I am fairly new to PHP and have an interesting question concerning the
> proper way to pass an array value from one division to another.
> I have an array I am building "on the fly" so to say. Let's say it has
> 100 items in it. Inititally, there is only one dimension to the array.
> Then later, I add a second dimension to that mainly to save time from
> having to create a second array.
> As an example, I have created $myarray[0]. On the second dimension I add
> $myarray[0]['name'].
> Here comes the problem. $myarray[0] prints and displays just fine in
> column 1 and column 2. $myarray[0]['name'] prints fine in column 1, but
> when printed in column 2, I get an illegal offset error message. Is
> there something I am missing to get $myarray[0]['name'] to print in
> column 2?

As Ben already explained, we need the code to be able to help you.
Could it be that you think your array is multidimensional but it ain't
in the all cases.


You can try to use var_export() to see how the array looks like

syslog(LOG_INFO, var_export($myarray, true));

then look in the /var/log/messages (or where your system logs syslog
messages) to see how the array looked like.


You could also use a function like this (far from perfect) to display
the array:

function printArray($yourArray) {
foreach($yourArray as $value) {
if(is_array($value)) {
print "\n";
printArray($value);
} else {
print $value ." | ";
}
}
print "\n";
}


example:
$myarray = array( "something",
"something else",
array("name" => "Someone", "Age" => "50"),
array("name" => "Zimone", "Age" => "12", "Color" => "Blue")
);
printArray($myarray);

output something like:
something | something else |
Someone | 50 |

Zimone | 12 | Blue |

--

//Aho
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: richard
Next Topic: Playlist different from displayed list in source html code
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Thu Nov 21 23:37:04 GMT 2024

Total time taken to generate the page: 0.02465 seconds