首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用foreach循环填充php多维数组

用foreach循环填充php多维数组
EN

Stack Overflow用户
提问于 2013-06-18 02:56:27
回答 2查看 214关注 0票数 2

我需要创建一个如下所示的数组:

代码语言:javascript
复制
$va_body=array(
    "bundles" => array(
        "$table.$elem" => array("convertCodesToDisplayText" => true),
        "$table.$elem" => array("convertCodesToDisplayText" => true),
    )
);

$table是一个不变的字符串,$elem是从数组中提取出来的。我接近了下面的代码,但它最终只有$bund的最后一个值,$bund是一个有两个值的数组。我猜在每个循环中都会重新声明数组?

代码语言:javascript
复制
$va_body=array(); // declare the array outside the loop
foreach ($bund as $elem ) {
    $va_body['bundles'] = array($table.".".$elem=>array("convertCodesToDisplayText" => true));
}

描述数组有两个元素“$bund”和"type_id“。

代码语言:javascript
复制
$va_body['bundles'][] // Adding [] doesn't work as it modifies the expected outcome.

print_r($va_body)看起来像这样:

代码语言:javascript
复制
Array (
    [bundles] => Array (
        [ca_objects.type_id] => Array (
            [convertCodesToDisplayText] => 1
            )
        )
    ) 

我需要的是:

代码语言:javascript
复制
Array (
    [bundles] => Array (
        [ca_objects.description] => Array (
            [convertCodesToDisplayText] => 1
        )
        [ca_objects.type_id] => Array (
            [convertCodesToDisplayText] => 1
        )
    )
)

提前谢谢。

@phpisuber01使用:

代码语言:javascript
复制
$va_body['bundles'][] = array($table.".".$elem=>array("convertCodesToDisplayText" => true));

print_r($va_body);看起来像这样:

代码语言:javascript
复制
 Array (
    [bundles] => Array (
        [0] => Array (
            [ca_objects.description] => Array (
                [convertCodesToDisplayText] => 1
            )
        )
        [1] => Array (
            [ca_objects.type_id] => Array (
                [convertCodesToDisplayText] => 1
            )
        )
    )
) 

我需要它像这样:

代码语言:javascript
复制
Array (
    [bundles] => Array (
        [ca_objects.description] => Array (
            [convertCodesToDisplayText] => 1
        )
        [ca_objects.type_id] => Array (
            [convertCodesToDisplayText] => 1
        )
    )
)

通过@phpisuber01回答:

代码语言:javascript
复制
$va_body['bundles'][$table.".".$elem] = array("convertCodesToDisplayText" => true);

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-18 03:00:22

你需要创建一个数组的数组。在您的循环中,更改以下行:

代码语言:javascript
复制
$va_body['bundles'][$table.".".$elem] = array("convertCodesToDisplayText" => true);

$va_body['bundles']之后添加了[]

所有这些操作都是不断地向数组中添加新的包。您的原始代码会覆盖每次迭代的包。这就是为什么你只能得到最后一个。

更新以更贴近OP的确切需求。

票数 1
EN

Stack Overflow用户

发布于 2013-06-18 03:24:00

代码语言:javascript
复制
$va_body = array();
$va_body['bundles'] = array();

foreach ($bund AS $elem)
{
    $va_body['bundles']["{$table}.{$elem}"] = array("convertCodesToDisplayText" => true);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17154761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档