I have an array:

```
$arr = array('foo', 'bar', 'bash', 'monkey', 'badger');

```

I want to have the elements in that array appear as the variables in my list():

```
list($foo, $bar, $bash, $monkey, $badger) = $data;

```

Without actually specifying the variables, I tried;

```
list(implode(",$", $arr)) = $data; and
list(extract($arr)) = $data;

```

But they don't work, I get:

```
Fatal error: Can't use function return value in write context

```

Does anyone have any idea whether this is possible?

---

UPDATE: more context:

I am getting a CSV of data from an API, the first row is column names, each subsequent row is data. I want to build an associative array that looks like this:

```
$data[0]['colname1'] = 'col1data';
$data[0]['colname2'] = 'col2data';
$data[0]['colname3'] = 'col3data';
$data[1]['colname1'] = 'col1data';
$data[1]['colname2'] = 'col2data';
$data[1]['colname3'] = 'col3data';

```

Before I do that, however, I want to make sure I have all the columns I need. So, I build an array with the column names I require, run some checks to ensure the CSV does contain all the columns I need. Once thats done, the code looks somewhat like this (which is executed on a foreach() for each row of data in the CSV):

```
//$data is an array of data WITHOUT string indexes
list(   $col1,
    $col2,
    $col3,
    ...
    $col14
 ) = $data;

foreach($colNames AS $name)
{
    $newData[$i][$name] = $$name;
}
// Increemnt
$i++;

```

As I already HAVE an array of column name, I though it would save some time to use THAT in the list function, instead of explicitly putting in each variable name.

The data is cleaned and sanitised elsewhere.

Cheers,

Mike