之前我的代码是这样的:
for ($i=0, $n=sizeof($values); $i<$n; $i++) {
$field .= '<option value="' . xtc_parse_input_field_data($values[$i]['id'], array('"' => '"')) . '"';
if ($default == $values[$i]['id']) {
$field .= ' selected="selected"';
}
$field .= '>' . xtc_parse_input_field_data($values[$i]['text'], array('"' => '"', '''' => ''', '<' => '<', '>' => '>')) . '</option>';
}
根据一些建议,我把它改成:
if (is_array($values) && count($values) > 0) {
foreach ($values as $value) {
$field .= '<option value="' . xtc_parse_input_field_data($value['id'], array('"' => '"')) . '"';
if ($default == $value['id']) {
$field .= ' selected="selected"';
}
$field .= '>' . xtc_parse_input_field_data($value['text'], array('"' => '"', '''' => ''', '<' => '<', '>' => '>')) . '</option>';
}
}
但是错误仍然存在:
注意:未定义的索引:id在E:'xampp'htdocs'testshop'inc'xtc_draw_pull_down_menu.inc.php
是什么导致这个错误?
我想说,这个警告基本上与您粘贴的代码片段没有任何关系,而是与$value
首先没有名为id
的索引这一事实有关。因此,为了修复它,您必须检查源- $values
生成/存储的地方,看看为什么有一些没有id的值。
话虽如此,在继续之前,为了防止代码中出现不必要的通知,可以添加以下行来测试名为id
的索引是否存在:
if(array_key_exists('id',$value)) {
//do all your stuff
}
您可以在foreach ($values as $value) {
之后的行下面添加这个,这样您在循环中所做的一切都只在$value
具有id
元素时才会发生。
然而,如前所述,如果您希望每个$value
都肯定有一个id
,请回到生成$values
的地方并检查那里发生了什么。