繁体   English   中英

从 Foreach 循环 PHP 创建关联数组

[英]Create associative array from 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');

我究竟做错了什么?

您需要更改您的 $aMemberships 分配

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

如果你想要一个数组

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

如果你想要一张地图。

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

foreach 语句中的关联数组:

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

  $field_data[$field]=$value;

}

输出:

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

在 CodeIgniter 中插入:

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

代替

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

尝试

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

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

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

在 foreach 循环中:

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

它打印一个数组数组,因为您在这一行中这样做

$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

您在 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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM