building an array of files

This is a discussion on building an array of files within the PHP Language forums, part of the PHP Programming Forums category; Hello folks - I'm working on a function to map a php project that's gotten a little unwieldly. I'...


Go Back   Usenet Forums > PHP Programming Forums > PHP Language

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 03-26-2007
lawpoop@gmail.com
 
Posts: n/a
Default building an array of files

Hello folks -

I'm working on a function to map a php project that's gotten a little
unwieldly. I'd like to have a reference of all files like the output
of the unix tree command, like this:
..
|-- index.php
| |-- menu.php
| |-- content.php
| |-- admin_page.php
| | |-- admin_function1.php.inc
| | |-- admin_function2.php.inc
| | |-- admin_function3.php.inc
| | `-- admin_subpage.php
| | |-- admin_subfunction1.php.inc
| | |-- admin_subfunction1.php.inc
| | `-- admin_subfunction1.php.inc
| `-- user_page.php
| |-- user_function1.php.inc
| |-- user_function2.php.inc
| |-- user_function3.php.inc
| `-- user_subpage.php
| |-- user_subfunction1.php.inc
| |-- user_subfunction1.php.inc
| `-- user_subfunction1.php.inc
|
|-- orphan_page.php
`-- deprecated_page.php

I have a function that can create such text output ( or close enough )
from an array structure like this:

Array (
[0] => ./index.php
[1] => Array (
[0] => ./clients.php
[1] => Array (
[0] => ./login_function.inc
[1] => ./client.php
[2] => ./client_new.php
[3] => ./client_edit.php
)
[2] => ./inventory.php
[3] => Array (
[0] => ./login_function.inc
[1] => ./inventory_item_add.php
[2] => ./inventory_item_remove.php
)

[4] => ./daily_report.php
[5] => ./weekly_report.php
[6] => ./monthly_report.php
[7] => ./catalog.php
[8] => Array (
[0] => ./login_function.inc
[1] => ./catalog_item_add.php
[2] => ./catalog_item_remove.php
)
[9] => ./orders.php
[10] => Array (
[0] => ./login_function.inc
[1] => ./view_order.php
[2] => ./order_new.php
[3] => ./order_edit.php
)
[11] => ./invoices.php
[12] => Array (
[0] => ./login_function.inc
[1] => ./view_invoice.php
[2] => ./invoice_new.php
[3] => ./invoice_edit.php
[4] => ./invoice_print.php
[5] => ./invoice_email.php
)
)
[2] => ./clients_old.php
[3] => ./old_inventory.php



However, now I'm having a problem building the array of files!

Starting with a default root file, index.php, I can loop through each
file and find each .php or .inc file. Then I can create an array like

Array (
[0] => ./index.php
[1] => Array (
[0] => ./clients.php
[2] => ./inventory.php
[4] => ./daily_report.php
[5] => ./weekly_report.php
[6] => ./monthly_report.php
[7] => ./catalog.php
[9] => ./orders.php
[11] => ./invoices.php
[2] => ./clients_old.php
[3] => ./old_inventory.php
)

Then, I need to go through each element and find out what files are
referenced in that file, and insert that array. So I would get:

Array (
[0] => ./index.php
[1] => Array (
[0] => ./clients.php
[1] => Array (
[0] => ./login_function.inc
[1] => ./client.php

However, I'm having problems getting started. What function can I use
to insert an array at a certain point?

Reply With Quote
  #2 (permalink)  
Old 03-26-2007
ZeldorBlat
 
Posts: n/a
Default Re: building an array of files

On Mar 26, 3:48 pm, lawp...@gmail.com wrote:
> Hello folks -
>
> I'm working on a function to map a php project that's gotten a little
> unwieldly. I'd like to have a reference of all files like the output
> of the unix tree command, like this:
> .
> |-- index.php
> | |-- menu.php
> | |-- content.php
> | |-- admin_page.php
> | | |-- admin_function1.php.inc
> | | |-- admin_function2.php.inc
> | | |-- admin_function3.php.inc
> | | `-- admin_subpage.php
> | | |-- admin_subfunction1.php.inc
> | | |-- admin_subfunction1.php.inc
> | | `-- admin_subfunction1.php.inc
> | `-- user_page.php
> | |-- user_function1.php.inc
> | |-- user_function2.php.inc
> | |-- user_function3.php.inc
> | `-- user_subpage.php
> | |-- user_subfunction1.php.inc
> | |-- user_subfunction1.php.inc
> | `-- user_subfunction1.php.inc
> |
> |-- orphan_page.php
> `-- deprecated_page.php
>
> I have a function that can create such text output ( or close enough )
> from an array structure like this:
>
> Array (
> [0] => ./index.php
> [1] => Array (
> [0] => ./clients.php
> [1] => Array (
> [0] => ./login_function.inc
> [1] => ./client.php
> [2] => ./client_new.php
> [3] => ./client_edit.php
> )
> [2] => ./inventory.php
> [3] => Array (
> [0] => ./login_function.inc
> [1] => ./inventory_item_add.php
> [2] => ./inventory_item_remove.php
> )
>
> [4] => ./daily_report.php
> [5] => ./weekly_report.php
> [6] => ./monthly_report.php
> [7] => ./catalog.php
> [8] => Array (
> [0] => ./login_function.inc
> [1] => ./catalog_item_add.php
> [2] => ./catalog_item_remove.php
> )
> [9] => ./orders.php
> [10] => Array (
> [0] => ./login_function.inc
> [1] => ./view_order.php
> [2] => ./order_new.php
> [3] => ./order_edit.php
> )
> [11] => ./invoices.php
> [12] => Array (
> [0] => ./login_function.inc
> [1] => ./view_invoice.php
> [2] => ./invoice_new.php
> [3] => ./invoice_edit.php
> [4] => ./invoice_print.php
> [5] => ./invoice_email.php
> )
> )
> [2] => ./clients_old.php
> [3] => ./old_inventory.php
>
> However, now I'm having a problem building the array of files!
>
> Starting with a default root file, index.php, I can loop through each
> file and find each .php or .inc file. Then I can create an array like
>
> Array (
> [0] => ./index.php
> [1] => Array (
> [0] => ./clients.php
> [2] => ./inventory.php
> [4] => ./daily_report.php
> [5] => ./weekly_report.php
> [6] => ./monthly_report.php
> [7] => ./catalog.php
> [9] => ./orders.php
> [11] => ./invoices.php
> [2] => ./clients_old.php
> [3] => ./old_inventory.php
> )
>
> Then, I need to go through each element and find out what files are
> referenced in that file, and insert that array. So I would get:
>
> Array (
> [0] => ./index.php
> [1] => Array (
> [0] => ./clients.php
> [1] => Array (
> [0] => ./login_function.inc
> [1] => ./client.php
>
> However, I'm having problems getting started. What function can I use
> to insert an array at a certain point?


There isn't really a straightforward way to insert an element at some
arbitrary position in an array. You can split the array in two and
then stitch it back together with something in the middle.

Instead of processing your files level by level, why not do it
recursively? For instance, when your parse index.php, instead of
adding clients.php, then inventory.php, and then going back and
checking for their includes, add clients.php and check for his
includes. When that's done, add inventory.php and check for his
includes. That way you never need to insert the new array in the
middle of the parent -- it'll just happen in the right order the first
time.

Reply With Quote
  #3 (permalink)  
Old 03-26-2007
CptDondo
 
Posts: n/a
Default Re: building an array of files

ZeldorBlat wrote:

> Instead of processing your files level by level, why not do it
> recursively? For instance, when your parse index.php, instead of
> adding clients.php, then inventory.php, and then going back and
> checking for their includes, add clients.php and check for his
> includes. When that's done, add inventory.php and check for his
> includes. That way you never need to insert the new array in the
> middle of the parent -- it'll just happen in the right order the first
> time.
>


Or store the info as XML and use XPath.... The first bit of work would
be harder, but then all the lookups and stuff would be there for you.

And you really don't have to care where the stuff is in the tree - just
look it up every time and add child nodes.

--Yan
Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT +1. The time now is 06:01 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0