Jump to content

I need help modifying an array


Recommended Posts

I have a script that pulls data from an Internal website. It has the following information:

- First Name

- Last Name

- ID (the only all numeric field)

- Job Title

- Department

- Building

I have about a 1000 users who are stored in a table like this, but not all of the information is listed. I have an array of the information pulled from the website and it looks like this:

0 - First Name

1 - Last Name

2 - ID

3 - Building

4 - First Name1

5 - Last Name1

6 - ID1

7 - Job Title1

8 - Department1

9 - Building1

10 - First Name2

11 - Last Name2

12 - ID2

13 - Department2

14 - Building2

I would like to have the array show the same data for each user. For example, even though First Name2 does not have a "Job Title", I'd still like for there to be an empty array or string with commas indicating the empty fields i.e. , , .

Is there a way I can insert where needed the correct field information? The only pattern that I can see is consistant is that the ID number is always after the names of the user.

I could have the array so that it only displays the First Name, Last Name and ID number. So I would need to delete all array indexes except those that are 2 before the ID number.

Is there a way I can detect the numbers in the array and then keep only the 2 indexes/fields before the ID number.

Here is the code:

#include <Inet.au3>
#include <String.au3>
#include <Array.au3>
Local $array2SizeNew
;ConsoleWrite(_INetGetSource('http://internal.website.com/stafflookup.aspx'))
$webSource = _INetGetSource('http://internal.website.com/stafflookup.aspx') ; get data from Internal website
$array = _StringBetween($webSource, 'size="3">', '</font>') ; extract data and place into an array
$nString = _ArrayToString($array,",") ; separate array into csv
$nString1 = StringStripWS($nString, 4) ; remove spacing
$nString2 = StringReplace($nString1,",&nbsp;","") ; remove html spacing code
ConsoleWrite($nString2) ; output string
$array1 = _StringBetween($nString2, '<a href=', '</a>'); obtain string with unc path to images. These are not needed and are stored in an separate array to be deleted out of the main array later.
;_ArrayDisplay($array1)
$array2 = _StringExplode($nString2,","); create an array
$array1Size = UBound($array1); find the size of the array
$array2Size = UBound($array2)
$array2SizeNew = UBound($array2)
;MsgBox(0,"Array 2 Size",$array2Size)
_ArrayDisplay($array2)
FileOpen("C:TempStaffGetLog.txt",10)
FileOpen("C:TempStaffGetLogRemove.txt",10)
For $i = 0 To $array2Size -2 ; search through main array to find a match in the array with the unc paths. If there is a match, then remove the index from the array.
If $array2SizeNew -1 = $i Then; when the unc path array has had all the values found, exit the loop.
ExitLoop
EndIf
;FileWriteLine("C:TempStaffGetLog.txt",$i)
For $b = 0 To $array1Size - 1
If '<a href=' & $array1[$b] & '</a>' = $array2[$i] Then
;FileWriteLine("C:TempStaffGetLogRemove.txt",$b & " - " & $array1[$b] & " - " & $i)
$newSize = _ArrayDelete($array2,$i)
$array2SizeNew = UBound($array2)
EndIf
Next
Next
_ArrayDelete($array2, 0); remove unneccessary data
_ArrayDelete($array2, 0)
_ArrayDelete($array2, 0)
_ArrayDelete($array2, 0)
_ArrayDelete($array2, 0)
_ArrayDelete($array2, 0)
_ArrayDelete($array2, 0)
$array2SizeNew = UBound($array2); find the new size of the array
_ArrayDelete($array2, $array2SizeNew -1); delete the last array index as it dosn't get removed in the loop
_ArrayDisplay($array2)
$nString3 = _ArrayToString($array2,",")
ConsoleWrite(@CR & @CR & @CR & $nString3 & @CR & @CR)
Edited by jazzyjeff
Link to comment
Share on other sites

jazzyjeff,

I would also recommend a new approach. _ietablewritetoarray will create a 2X table with cells aligned. It is then a simple matter to iterate through the table selecting what you need.

kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Link to comment
Share on other sites

Ah man! You're smart.

You just saying made me look at what I was doing and realised that the way i was extracting the code was all wrong.

So right here I was just getting rid of the space in the table:

$nString2 = StringReplace($nString1,",&nbsp;","") ; remove html spacing code

What I should have done was replace the &nbsp; with a ,.

$nString2 = StringReplace($nString1,",&nbsp;",",") ; remove html spacing code

Thanks for getting me to use my brain better.

Sorry for any bother.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...