/ / spingere un array associativo come un unico array associativo - php, array, laravel, laravel-5, array associativo

spingere un array associativo come un unico array associativo - php, array, laravel, laravel-5, array associativo

Ho questo formato di array associativo desiderato (vedi sotto)

$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"
),
);

e in Laravel cosa, ho recuperato un record in una tabella di database e lo ho fatto in loop, quindi ho ottenuto il suo valore e lo ho spinto in un array.

$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);
}

ha funzionato ma il formato di array associativo (vedi sopra il formato di array associativo) non era quello che voglio, ma mi dà questo.

$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"
)),
);

qualche idea, aiuto per favore?

risposte:

6 per risposta № 1

array_push spingere l'elemento verso la fine di array. Stai facendo come -

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

Quale darebbe -

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

Ma secondo la tua produzione desiderata, vuoi $item->name essere l'indice e l'array ("k1" ...) per essere gli elementi.

Puoi fare semplicemente -

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

1 per risposta № 2

Dentro il foreach loop fai questo invece.

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

e tu non hai bisogno di usare il array_push($k_array,$sr);