Re: php+html mixup in displaying multidimensional array in html tables [message #176865 is a reply to message #176847] |
Sun, 29 January 2012 19:58 |
Denis McMahon
Messages: 634 Registered: September 2010
Karma:
|
Senior Member |
|
|
On Sat, 28 Jan 2012 15:14:51 -0500, Jerry Stuckle wrote:
> On 1/28/2012 2:28 PM, Denis McMahon wrote:
>> On Sat, 28 Jan 2012 12:24:14 +0100, John wrote:
>>
>>> I am new to this problem and shall be very grateful for any hint on
>>> how to a´void an unreadable code-salad, when trying to display a
>>> bidimensional array (thus with two indexes) on a html table. I refer
>>> to the continuous shifting between<?php and<html> every two lines.
>>>
>>> Is there a method which is 'quick an easy' to do the job ?
>>
>> You mean something like:
>>
>> echo "<table>\n";
>> foreach ($arr as $line) {
>> echo "<tr>\n";
>> foreach ($line as $cell) {
>> echo "<td>$cell</td>\n";
>> }
>> echo "</tr>\n";
>> }
>> echo "</table>\n";
>>
>> This is a very crude solution, makes several assumptions, and has no
>> testing of or handling for unexpected conditions. Depending on the data
>> you feed it, it may crash or generate invalid markup, but under some
>> conditions it might instead generate a valid table.
>>
>> The wonders of usenet will probably screw the formatting too. I can't
>> do much about that.
> What is crude about it? What assumptions (other than the data does not
> need to be run though htmlentities() or htmlspecialchars(), which is
> quite easy to do)?
1) If the sub arrays don't all contain the same number of elements, you
could get a table with different numbers of cells in different rows.
Ideally you ought to catch that somehow. One of the principles I was
taught was about being liberal in what you accept as input and specific
in what you generate as output.
2) What if an array member is a binary object or a class?
Ultimately my solution is probably only suited to 2d arrays containing
the same number of elements in each sub-array, and where each element in
a sub-array is either an html safe string or a numeric value.
> And what would crash?
I have no idea what it will do if you feed it a binary object or a class
as a sub-array element, but I suspect it may crash. Whatever it does do,
from the point of view that the desired behaviour is that of "generating
meaningful html", I doubt it would work as desired if eg
$arr[3][2] = imagecreatetruecolor(640,480);
$arr[1][3] = fopen("/path/file.type","r");
etc etc
Rgds
Denis McMahon
|
|
|