【问题标题】:PHP extract values from arrayPHP从数组中提取值
【发布时间】:2014-08-04 17:53:27
【问题描述】:

我正在尝试从数组中的数组中提取值。到目前为止,我的代码如下所示:

$values = $request->request->get('form');
$statusArray = array();
foreach ($values->status as $state) {
    array_push($statusArray, $state);
}

对 $values 字段执行 var_dump 的结果是这样的:

array (size=2)   
   'status' => 
      array (size=2)
        0 => string 'New' (length=9)  
        1 => string 'Old' (length=9)    
   'apply' => string '' (length=0)

运行上面的代码时,我收到一个错误,基本上说“状态”不是一个对象。谁能告诉我如何在“状态”中提取数组的值??

【问题讨论】:

  • var_dump($values); 会有所帮助

标签: php arrays


【解决方案1】:

-> 是访问对象值的符号,对于数组,您必须使用['key']

foreach ($values['status'] as $state) {
  array_push($statusArray, $state);
}

对象示例:

class Foo {
  $bar = 'Bar';
}

$foo = new Foo();
echo $foo->bar // prints "bar"

【讨论】:

  • 那么使用->有什么问题呢?他的get('form') 函数仍然可以返回一个对象,他可以在他的循环中使用它:foreach ($values->status as $state)
  • 实际上,如果您看到var_dump,它说get('form')返回一个数组,如果它会返回一个对象,您可以使用-> 符号,就像您建议的那样,否则这种符号未为数组定义,您将引发异常。
  • 确实如此。对不起,我的错。
  • 如果不知道返回的是什么类型的变量,可以使用is_arrayis_object来确定使用哪种访问操作符。
  • 感谢您的回复。是否可以对数组进行空检查?例如,状态可能并不总是存在于数组中。我试图做这样的事情:'if ($values['status'] != null){' 但只是得到一个未定义的索引:状态错误
猜你喜欢
  • 1970-01-01
  • 2022-11-18
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多