Search code examples
phparraysassociative-arraytext-parsingdelimited

Split pipe-delimited values of a flat array into an associative array


//go through each question
foreach($file_data as $value) {
   //separate the string by pipes and place in variables
   list($category, $question) = explode('|', $value);

   //place in assoc array
   $data = array($category => $question);
   print_r($data);

}

This is not working as it replaces the value of data. How can I have it add an associative value each loop though? $file_data is an array of data that has a dynamic size.


Solution

  • I think you want $data[$category] = $question;

    Or in case you want an array that maps categories to array of questions:

    $data = array();
    foreach($file_data as $value) {
        list($category, $question) = explode('|', $value, 2);
    
        if(!isset($data[$category])) {
            $data[$category] = array();
        }
        $data[$category][] = $question;
    }
    print_r($data);