从Foreach Loop PHP创建关联数组

时间:2010-09-30 18:57:02

标签: php foreach

我有这个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 个答案:

答案 0 :(得分:41)

您需要更改$ aMemberships任务

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

如果你想要一个数组

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

如果你想要一张地图。

您正在做的是将数组附加到数组。

答案 1 :(得分:15)

foreach语句中的关联数组:

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

  $field_data[$field]=$value;

}

输出:

Array(
$field => $value,
$field => $value
...
);
在CodeIgniter中插入

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

答案 2 :(得分:9)

而不是

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

尝试

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

答案 3 :(得分:3)

您现有的代码使用增量键并将该数组用作相应的值。 要使$aMemberships成为一个关联数组,关键字为$aMemb['ID']且值为$aMemb['Name'],则需要更改

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

在foreach循环中:

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

答案 4 :(得分:1)

它会打印一个数组数组,因为你在这行

中这样做了
$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

答案 5 :(得分:0)

您在foreach循环中获得key and value的关联数组,并创建具有键和值对的关联。

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