Подтвердить что ты не робот

Создание ассоциативного массива из Foreach Loop PHP

У меня есть этот цикл foreach:

foreach($aMbs as $aMemb){
    $ignoreArray = array(1,3);
    if (!in_array($aMemb['ID'],$ignoreArray)){ 
        $aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);
    }
}

Это выводит правильные поля, но они являются массивами внутри массивов. Мне нужен цикл foreach для вывода простого массива, подобного этому:

$aMemberships = array('1' => 'Standard', '2' => 'Silver');

Что я делаю неправильно?

4b9b3361

Ответ 1

Вам нужно изменить назначение $aMemberships

$aMemberships[] = $aMemb['Name']; 

Если вам нужен массив

$aMemberships[$aMemb['ID']] = $aMemb['Name'];

если вам нужна карта.

Что вы делаете, это добавить массив в массив.

Ответ 2

Ассоциативный массив в инструкции foreach:

foreach($nodeids as $field => $value) {

  $field_data[$field]=$value;

}

Вывод:

Array(
$field => $value,
$field => $value
...
);

в CodeIgniter:

$res=$this->db->insert($bundle_table,$field_data);

Ответ 3

Вместо

$aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);

Try

$aMemberships[$aMemb['ID']] = $aMemb['Name'];

Ответ 4

Существующий код использует инкрементный ключ и использует массив как соответствующее значение. Чтобы сделать make $aMemberships ассоциативным массивом с ключом как $aMemb['ID'], а значение $aMemb['Name'] вам нужно изменить

    $aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);

в цикле foreach:

    $aMemberships[$aMemb['ID']] = $aMemb['Name']);

Ответ 5

он печатает массив массивов, потому что вы делаете это в этой строке

$aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);

где вы [] после переменной вы указываете, чтобы назначить значение в новой строке массива, и вы вставляете другой массив в эту строку

чтобы вы могли использовать примеры, которые уже дали другие, или вы можете использовать этот метод:

int array_push ( array &$array , mixed $var [, mixed $... ] )

вот пример, который вы можете найти в api

<?php
$stack = array(0=>"orange",1=>"banana");
array_push($stack, 2=>"apple",3=>"raspberry");
print_r($stack);
?>

//prints
Array
(
    [0] => orange
    [1] => banana
    [2] => apple
    [3] => raspberry
)

http://php.net/manual/en/function.array-push.php