Создать ассоциативный массив из цикла Foreach Loop - PullRequest
20 голосов
/ 30 сентября 2010

У меня есть цикл 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');

Что я делаю не так?

Ответы [ 6 ]

42 голосов
/ 30 сентября 2010

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

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

Если вы хотите массив

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

, если вы хотите карту.

Что вы делаетедобавляет массив к массиву.

16 голосов
/ 21 января 2013

Ассоциативный массив в выражении foreach:

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

  $field_data[$field]=$value;

}

Вывод:

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

вставка в CodeIgniter:

$res=$this->db->insert($bundle_table,$field_data);
9 голосов
/ 30 сентября 2010

Вместо

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

Попробуйте

$aMemberships[$aMemb['ID']] = $aMemb['Name'];
3 голосов
/ 30 сентября 2010

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

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

в цикле foreach:

    $aMemberships[$aMemb['ID']] = $aMemb['Name']);
1 голос
/ 30 сентября 2010

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

$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

0 голосов
/ 06 марта 2019

Вы получаете key and value ассоциативного массива в цикле foreach и создаете ассоциативную связь с парами ключ-значение.

$aMemberships=array();//define array
foreach($aMbs as $key=>$value){
    $ignoreArray = array(1,3);
    if (!in_array($key,$ignoreArray)){ 
        $aMemberships[$key] = $value;
    }
}

Это даст вам ожидаемый результат:

array('1' => 'Standard', '2' => 'Silver');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...