Php 循环内部关联数组

Php 循环内部关联数组,php,associative-array,Php,Associative Array,我已经编写了一段代码,希望在关联数组中添加一些数据。我想使用array_push,但我想我应该向社区询问这种做法。我这样做对吗?我想要实现的是,对于for循环数据的每个索引,都应该将其添加到数组中,但在这里,我认为每次都会创建一个新实例。选项是数组,id\u选项和名称应该在数组的每个索引中,就像查找数据时一样,它应该是$options[0]['id\u option'] for ($mn = 0; $mn < sizeof($pages); $mn++) { $options =

我已经编写了一段代码,希望在关联数组中添加一些数据。我想使用array_push,但我想我应该向社区询问这种做法。我这样做对吗?我想要实现的是,对于for循环数据的每个索引,都应该将其添加到数组中,但在这里,我认为每次都会创建一个新实例。选项是数组,id\u选项和名称应该在数组的每个索引中,就像查找数据时一样,它应该是
$options[0]['id\u option']

for ($mn = 0; $mn < sizeof($pages); $mn++) {
    $options = array(
        array(
            'id_option' => $pages[$mn]['meta_title'],
            'name' => $pages_links[$mn]['link'],
        )
    );
}
for($mn=0;$mn$pages[$mn]['meta_title'],
'name'=>$pages\u links[$mn]['link'],
)
);
}
我也试过这样做,但不起作用,下面的语法错误(这只是出于理论目的:

$options = array(
    for ($mn = 0; $mn < sizeof($pages); $mn++) {
        array(
            'id_option' => $pages[$mn]['meta_title'],
            'name' => $pages_links[$mn]['link'],
        )
    }
);
$options=array(
对于($mn=0;$mn$pages[$mn]['meta_title'],
'name'=>$pages\u links[$mn]['link'],
)
}
);
您想要这个:

$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'];
} 
$options=array();
对于($mn=0;$mn
$options=array();//初始化数组选项
对于($mn=0;$mn$pages[$mn]['meta_title'],
'name'=>$pages\u links[$mn]['link'],
);
}
打印(可选);

注意$option变量后面的括号-这将告诉PHP向数组$options添加一个值

您希望添加它,而不是覆盖它,因此使用
$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'],
     ];
}
//将$options定义为数组
$options=[];
//将包含数据的数组添加到$options数组
对于($mn=0;$mn$pages[$mn]['meta_title'],
'name'=>$pages\u links[$mn]['link'],
];
}

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

您的第二个代码不起作用。但是您可以稍微更改第一个代码,使其起作用

$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=[];//定义数组
对于($mn=0;$mn$pages[$mn]['meta_title'],
'name'=>$pages\u links[$mn]['link'],
);
}
  • $options=[]定义数组
  • 然后for循环遍历数据
  • 每次循环运行时,PHP都会使用array()函数创建新的关联数组,并将其作为新元素添加到$options数组中
  • 最后,您将得到一个多维数组。($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);
$options=array();
对于($mn=0;$mn
因为我不知道你的原始数据是什么样子的,所以测试它是否有效有点困难


希望有帮助。

将行
$options=array(
更改为
$options[]=array(
)?我可以试试看它是否有效。$options.push,这看起来像是与Javascript的混合。这给了我想要的。谢谢。我也尝试过。它可以工作,但我选择的更接近我的代码。+1:D
$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);