簡體   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