for循环中的关联数组

问题描述 投票:1回答:5

我编写了一个代码,我想在关联数组中添加一些数据。我想使用array_push,但我想我应该向社区请求这种做法。我这样做是正确的吗?我想要实现的是,for循环数据的每个索引都应该添加到数组中,但是每次我想的时候都会创建一个新的实例。选项是数组,id_option和name应该在数组的每个索引中,就像在查找数据时一样,它应该是$options[0]['id_option']

for ($mn = 0; $mn < sizeof($pages); $mn++) {
    $options = array(
        array(
            'id_option' => $pages[$mn]['meta_title'],
            'name' => $pages_links[$mn]['link'],
        )
    );
}

我也尝试过这种方式,但这不起作用,下面的语法错误(仅用于理论目的:

$options = array(
    for ($mn = 0; $mn < sizeof($pages); $mn++) {
        array(
            'id_option' => $pages[$mn]['meta_title'],
            'name' => $pages_links[$mn]['link'],
        )
    }
);
php associative-array
5个回答
2
投票
$options = array();//init the array options

for ($mn = 0; $mn < sizeof($pages); $mn++) {
    $options[] = array(
        'id_option' => $pages[$mn]['meta_title'],
        'name' => $pages_links[$mn]['link'],
    );
}

print_r($options);

注意$ option变量之后的哈利特 - 这将告诉PHP为数组$ options添加一个值


1
投票

你想要添加它,而不是覆盖它,所以使用$options[] = x

好的做法是在循环上面定义空数组,因此在代码的其他部分中,您至少应该使用一个数组(空或不),而不是未定义的var。

// define $options as an array
$options = [];

// add array with data to $options array
for ($mn = 0; $mn < sizeof($pages); $mn++) {
    $options[] = [
        'id_option' => $pages[$mn]['meta_title'],
        'name' => $pages_links[$mn]['link'],
     ];
}

我还删除了第二个嵌套数组。


0
投票

你的第二个代码不起作用。但是你可以稍微更改你的第一个代码并使其正常工作。

$options = []; // defines the array
for ($mn = 0; $mn < sizeof($pages); $mn++) {
    $options[] = array(
            'id_option' => $pages[$mn]['meta_title'],
            'name' => $pages_links[$mn]['link'],
    );
}
  • $ options = []定义数组
  • 然后for循环遍历您的数据。
  • 每次循环运行时,PHP都会使用array()函数创建新的关联数组,并将其作为新元素添加到$ options数组中。
  • 最后你会得到一个多维数组。 ($选项)

谢谢。


0
投票

你上面做的是每次都会覆盖options数组。

不是100%确定你想要做什么,但尝试这样的事情:

$options = array();

for ($mn = 0; $mn < sizeof($pages); $mn++) {
   $key = $pages[$mn]['meta_title'];
   $value = $pages_links[$mn]['link'];
   $options[$key] = $value;
}

var_dump($options);

由于我不知道您的原始数据是什么样的,因此测试是否有点困难。

希望能帮助到你。


0
投票

你要这个:

$options = array();

for ($mn = 0; $mn < sizeof($pages); $mn++)
{
    $options[$mn] = array();
    $options[$mn]['id_option'] = $pages[$mn]['meta_title'];
    $options[$mn]['name'] = $pages_links[$mn]['link'];
} 
© www.soinside.com 2019 - 2024. All rights reserved.