php中未初始化的字符串偏移量

时间:2015-08-07 11:54:00

标签: php arrays string

我看了一下看起来像我的其他问题,但找不到一个好的答案。所以

$machines = get_machine($platform);
$options = array() ;
$options[0] = "please select";
foreach( (array)$machines as $machine_){
    $options[$machine_[0]] = $machine_[1] ;
    array_push($temp,$machine_[0]); 
}

//print_r($options);

$form->addElement(new Element\Select("Existing machines :", "machine", array("onchange" => "this.form.submit()", "value" => $machine)));
if ( !in_array( $machine, $temp ) )
    $machine = 0;

$form->addElement(new Element\Textbox("Add new/Edit machine:", "new_machine", array("placeholder" => "new machine", "shortDesc" => "Add new machine or edit the existing one", "value" => get_machine( $machine ))));

它表示“机器”没有定义和偏移的偏移。 这里定义了:

if ( isset($_POST['machine']) ) $mask = $_POST['machine']; else $machine = 0;

我和其他变量有完全相同的代码,并没有给我这样的错误。我确信,没有错别字。

1 个答案:

答案 0 :(得分:0)

我相信这会让我得到另一连串的downvotes,但是有一种方法可以帮助我保持我的陈述简短易读(没有始终在isset($_POST['...'])处进行),而是将预期值初始化为我的页面顶部和直接位于其下方 extract($_POST)命令,如:

$amount=$mask=$machine=0; $flag1=$flag2=$flag2=false;
extract($_POST);

是的,这个转换已发布到我页面上的php变量中的所有,但是......

  1. 首先需要posted(因此缩小了范围)
  2. 它将被忽略(如果它是一个未被保留的变量)或稍后在我自己的代码中重置为其正确的值。
  3. 好处是,在初始化之后,我不再需要为任何isset()打扰。我只是直接使用预期的变量。它将以其初始化形式(值为0或false)或extract()语句的结果存在。