//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);
}
Esto no funciona ya que reemplaza el valor de los datos. Sin embargo, ¿cómo puedo hacer que agregue un valor asociativo en cada bucle? $file_dataes una matriz de datos que tiene un tamaño dinámico.

Simplemente puedes hacer esto
$data += array($category => $question);Si está ejecutando php 5.4+
fuente
antes de bucle:
$data = array();luego en tu bucle:
$data[] = array($catagory => $question);fuente
$data=[];$data[] = [$category => $question];$res = array(); $res[] = array('foo' => $bar); $foo = $res['foo'];falla con un índice indefinido: foo in .. , pero el signo más sugerido debajo funciona.Sé que esta es una pregunta antigua, pero puedes usar:
array_push($data, array($category => $question));Esto empujará
arrayal final de su corrientearray. O si solo está tratando de agregar valores únicos al final de su matriz, no más matrices, puede usar esto:fuente
Para cualquiera que también necesite agregar a una matriz asociativa 2d, también puede usar la respuesta dada anteriormente y usar el código como este
$data[$category]["test"] = $questionluego puede llamarlo (para probar el resultado mediante:
echo $data[$category]["test"];que debería imprimir $ pregunta
fuente