/ / натиснути асоціативні масиви як єдиний асоціативний масив - php, масиви, laravel, laravel-5, асоціативний масив

натиснути асоціативні масиви як один асоціативний масив - php, масиви, laravel, laravel-5, асоціативний масив

У мене є такий бажаний формат асоціативного масиву (див. Нижче)

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

і в річці Laravel я витягнув записи в таблиці бази даних і наклав цикл на ній, а потім отримав її значення і натиснув на масив.

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

це працює, але формат асоціативного масиву (див. вище формат асоціативного масиву) був не таким, який я хочу, він дає мені це замість цього.

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

якісь ідеї, допоможіть будь ласка?

Відповіді:

6 за відповідь № 1

array_push натисніть елемент на кінець array. Ви робите так -

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

Що б дало -

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

Але відповідно до бажаного результату, ви хочете $item->name бути індексом і масивом ("k1" ...), щоб бути елементами.

Ви можете просто -

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

1 для відповіді № 2

Всередині foreach цикл зробіть це замість цього.

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

і вам не потрібно використовувати це array_push($k_array,$sr);