Daric
Daric

Reputation: 16769

PHP Array Generator

I have some values in a excel file and I want all of them to be array element remember file also have other data in it.

I know one way is that copy them one by one and put into array initialize statment

A sample list which is just a part of whole list

Bay Area 
Greater Boston
Greater Chicago
Greater Dallas-Ft. Worth
Greater D.C.
Las Vegas
Greater Houston
Greater LA
Greater New York
Greater San Diego
Seattle
South Florida

It is easy to initialize array with values when there are not much items like

$array= array('Bay Area '=>'Bay Area ','Greater Boston'=>'Greater Boston',....) 
// and so on

But I have 70-80 of items it is very tedious task to initialize array like above.

So, Guys Is there any alternate or short cut to assign array with the list of values?

Is there any auto array generator tool?

Upvotes: 3

Views: 14416

Answers (5)

Maxime Pacary
Maxime Pacary

Reputation: 23081

$array = explode("\n", file_get_contents('yourfile.txt'));

For more complex cases for loading CSV files in PHP, maybe use fgetcsv() or even PHPExcelReader for XLS files.

EDIT (after question edit)

(Removed my poor solution, as ohmusama's file() + array_combine() is clearly nicer)

Upvotes: 3

ohmusama
ohmusama

Reputation: 4215

If you copied them to a file with each one its own line you could read the file in php like this

$myArray = file('myTextFile');

//sets the keys to the array equal to the values
$myArray = array_combine($myArray, $myArray); 

You could export the data from excel to a CSV, then read the file into php like so:

$myArray = array();
if (($file = fopen("myTextFile", "r")) !== FALSE) {
    while (($data = fgetcsv($file)) !== FALSE) {
        foreach($data as $value) {
            $myArray[$value] = $value;
        }
    }
    fclose($handle);
}

Upvotes: 6

ern0
ern0

Reputation: 3172

I think it's looks better:

$a[] = "Bay Area";
$a[] = "Greater Boston";
$a[] = "Greater Chicago";

For creating such text file, use Excel (I don't have Excel, but it looks somewhat):

=concatenate(" $a[] = ",chr(34),A1,chr(34),";")

Then export only that column.

Upvotes: 0

netbrain
netbrain

Reputation: 9304

get notepad++, open the excel file there, and do a simple search and replace with regex. something like search for "(.*)\n" and replace with "'(\1)'," (" quoutes not included), this would give you a long list of:

'Bay Area','Greater Boston','Greater Chicago'

This would be the fastest way of creating the array in terms of php execution time.

Upvotes: 1

Matej Baćo
Matej Baćo

Reputation: 1332

This one:

$string_var = "
Bay Area 
Greater Boston
Greater Chicago
Greater Dallas-Ft. Worth
";

$array_var = explode("\n", $string_var);

Upvotes: 1

Related Questions