0

我的数组的截图是这样的;

Array(
      [a] => val1 
      [b] => 
           Array(
                 [c]=>68 
          )
)

我怎样才能得到变量;

a=val1
c=68

与 php 使用循环?

4

7 回答 7

1

看看:http ://us.php.net/manual/en/function.http-build-query.php

它将采用一个数组(关联)并将其转换为查询字符串。

于 2012-12-04T13:56:54.027 回答
1
$array = array('a' => 'val1', 'b' => array('c' => 68));
echo $array['a']; //val1
echo $array['b']['c']; //68

仅输出多维数组的所有

function outputValue($array){
  foreach($array as $key => $value){
    if(is_array($value)){
      outputValue($value);
      continue;
    }
    echo "$key=$value" . PHP_EOL;
  }
}

同样可以使用array_walk_recursive()

array_walk_recursive($array, function($value, $key){echo "$key=$value" . PHP_EOL;});
于 2012-12-04T13:57:07.443 回答
0

你会使用:

foreach ($x as $k=>$v) 

$x你的数组在哪里;这将遍历每个元素$x并分配$k键和$v值。

例如,下面是一个设置数组并显示它的代码片段:

$x = array('a'=>'val1', 'b'=>'val2');
foreach ($x as $k=>$v) {
    echo "$k => $v<br />";
}
于 2012-12-04T13:58:15.743 回答
0

您使用 PHP 函数extract() http://php.net/manual/en/function.extract.php

像这样:

<?php

$var_array = array("color" => "blue",
               "size"  => "medium",
               "shape" => "sphere");
extract($var_array);

echo "$color, $size, $shape\n";

?>
于 2012-12-04T14:01:46.930 回答
0

如果您知道它的最大一个数组深度,您可以使用

foreach ($myArray as $key=>$val) {
  if (is_array($val) {
    foreach ($val as $key2=>$val2) {
      print $key2.'='.$val2;
    }
  } else {
    print $key.'='.$val;
  }
}

如果可以更多,请使用功能

function printArray($ar) {
  foreach ($myArray as $key=>$val) {
    if (is_array($val) {
      printArray($val)
    } else {
      print $key.'='.$val;
    }
  }
}

printArray($myArray);
于 2012-12-04T14:10:14.353 回答
0

如果您尝试提取变量,请尝试:

<?php
$array = array('a' => 'val1', 'b' => array('c' => 68));

$stack = array($array);
while (count($stack) !== 0) {
    foreach ($stack as $k0 => $v0) {
        foreach ($v0 as $k1 => $v1) {
            if (is_array($v1)) {
                $stack[] = $v1;
            } else {
                $$k1 = $v1;
            }
            unset($k1, $v1);
        }
        unset($stack[$k0], $k0, $v0);
    }
}
unset($stack);

这将在当前变量范围内创建$a(val1) 和(68)。$c

于 2012-12-04T14:10:51.083 回答
0

您可以使用RecursiveIteratorIterator+RecursiveArrayIteratorArrayIterator

示例您当前的数据

$data = array(
  'a' => 'val1',
  'b' => array('c'=>68)
);

解决方案

$it = new RecursiveIteratorIterator(new RecursiveArrayIterator(new ArrayIterator($data)));
echo "<pre>";
foreach ($it as $k=> $var)
{
    printf("%s=%s\n",$k,$var);
}

输出

a=val1
c=68

见现场演示 PHP 5.1.0 - 5.4.9

于 2012-12-04T14:16:30.800 回答