【问题标题】:PHP Array to Variables after Foreach loopForeach循环后PHP数组到变量
【发布时间】:2014-06-13 20:28:45
【问题描述】:

嗨,我的代码如下

if(is_a($values, 'pingidentity\opentoken\helpers\multistringarray'))
{
     foreach($values->keySet() as $key) 
     {

          foreach($values->get($key) as $value) 
          {
               $i++;
               print "<tr><td class=\"d".($i&1)."\">".$value."</td><tr>";
          }
     }
}

当我print_r时,数组输出是

pingidentity\opentoken\helpers\MultiStringArray Object
(
    [_values:pingidentity\opentoken\helpers\MultiStringArray:private] => Array
        (
            [not-before] => Array
                (
                    [0] => 2014-06-13T19:33:15Z
                )

            [authnContext] => Array
                (
                    [0] => urn:oasis
                )

            [email] => Array
                (
                    [0] => test@test.com
                )

            [subject] => Array
                (
                    [0] => usernametest
                )
        )
)

我正在寻求有关如何获取数组输出并将值输入变量的帮助

我现在已经将对象转换为数组

$array = (array) $values;

结果如下

Array
        (
            [not-before] => Array
                (
                    [0] => 2014-06-13T23:17:08Z
                )

            [authnContext] => Array
                (
                    [0] => urn:oasis                )

            [email] => Array
                (
                    [0] => test@test.com
                )

            [subject] => Array
                (
                    [0] => usernametest
                )


        )

)

【问题讨论】:

  • 为什么不只使用关联数组,即a['somename'] = 'x';,而不是数字索引a[0] = 'x';
  • 您可能需要像$value[0] 一样访问每个$value,因为您拥有对象/数组设置的方式。 $value 的简单 var_dump/print_r 会显示它的结构。
  • 您要访问哪些值?
  • 我正在尝试使用 [0] = > ....... 访问 [email]、[subject] ..etc 的所有值

标签: php arrays variables


【解决方案1】:

记住你可以访问键的值:

$result = array();
foreach($values as $key => $value){
  if($key != 'excludeVal' && $key != 'exclude2') //here you can exclude some keys that you don't need
  $result[$key] = $value;
}

之后就可以使用提取功能了

extract($result);

甚至使用extract($values);

这个函数像一个变量一样返回每个键,例如:如果你在提取调用之后有一个名为 ["key1"] 的键,你可以使用变量 $key1 并且它具有键的值

【讨论】:

  • 当我尝试 $result = array(); foreach($values as $key => $value){ if($key != 'not-before' && $key != 'authnContext') //这里可以排除一些不需要的key $result[ $key] = $价值; } 提取($结果);没有返回任何结果
  • 没有返回,你使用键 las 变量,如果你有一个不排除的键,你可以像变量一样使用它,我的意思是如果你不排除键 authnContext 并且你使用extract($result) 函数,您将能够使用 $authnContext 变量
  • 尝试这样做 foreach($values as $key => $value){echo $key.": ".$value;}
  • 我尝试了这两个建议,但都没有返回任何结果
  • 你得到了什么结果?
【解决方案2】:

您可以将此对象类型转换为数组。 或使用 Object 并使用 -> 运算符来访问内容

【讨论】:

  • 你能提供帮助吗?
猜你喜欢
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 2012-12-20
  • 2023-04-06
  • 2014-05-27
  • 1970-01-01
  • 2011-06-09
相关资源
最近更新 更多