/ / empuje una matriz asociativa como una matriz asociativa - php, matrices, laravel, laravel-5, array asociativa

empujar una matriz asociativa como una matriz asociativa - php, arrays, laravel, laravel-5, array asociativo

Tengo este formato de matriz asociativa deseada (refiérase a continuación)

$url = array (
"a1" => array(
"k1" => "content of k1 in a1 array",
"k2" => "content of k2 in a1 array"
),
"a2" => array(
"k1" => "content of k1 in a2 array",
"k2" => "content of k2 in a2 array"
),
);

y en el asunto Laravel, recuperé un registro en una tabla de base de datos y lo formé en un bucle, luego obtengo su valor y lo empujo hacia una matriz.

$k = kk::with("kk_names")->get();
$k_array = array();
foreach($k as $item){
$sr = array($item->name => array("k1" => $item->items[0]->description,"k2" => $item->items[1]->description))
array_push($k_array,$sr);
}

Funcionó, pero el formato de matriz asociativa (consulte el formato de matriz asociativa anterior) no era el que yo quería, me da esto en su lugar.

$url = array (
array("a1" => array(
"k1" => "content of k1 in a1 array",
"k2" => "content of k2 in a1 array"
)),
array("a2" => array(
"k1" => "content of k1 in a2 array",
"k2" => "content of k2 in a2 array"
)),
);

¿Alguna idea, ayuda por favor?

Respuestas

6 para la respuesta № 1

array_push empuje el elemento hacia el final de array. Estás haciendo como ...

array_push(array(...), array($item->name => ...));

Que daría ...

array (
array($item->name => ...),
array($item->name => ...)
)

Pero de acuerdo a su salida deseada, desea $item->name para ser el índice y la matriz ("k1" ...) para ser los elementos.

Usted puede hacer simplemente -

foreach($k as $item) {
$k_array[$item->name] = array(
"k1" => $item->items[0]->description,
"k2" => $item->items[1]->description
);
}

1 para la respuesta № 2

Dentro de foreach bucle hacer esto en su lugar

foreach($k as $item){
$k_array[$item->name] = array(
"k1" => $item->items[0]->description,
"k2" => $item->items[1]->description
)
}

y usted no necesita utilizar el array_push($k_array,$sr);