从foreach()循环和print_r()返回数组

时间:2011-01-16 19:50:55

标签: php arrays

我正在对数组进行一些研究,我正在尝试解决如何将foreach循环的值存储到数组中,然后我可以print_r()

除了$array = foreach()...之外,我的脚本运行正常。正如您所看到的,我调用了return;将结果返回给$array变量,但是我得到了一个解析错误。

到目前为止,这是我的代码:

<?php

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <input type="radio" name="DataNameOne" value="Value 1">
  <input type="radio" name="DataNameTwo" value="Value 2">
  <input type="radio" name="DataNameThree" value="Value 3">
  <input type="submit" />
</form>
<?php

$array = foreach ($_POST as $key=>$value) {
    if (stristr($key, "section")) {
        $section = $value;
        $section_name = $key;
        return;
    }
    echo "Key is: $key and Valus is: $value";
}

echo "<pre>";
print_r($array);
echo "</pre>";

?>

3 个答案:

答案 0 :(得分:6)

你可以做到

$array = $_POST;

因为$ _POST已经是一个数组。但是,如果您想使用foreach循环迭代源数组并仅复制它的某些部分,您可以执行以下操作:

$new_array = array()
foreach($original_array as $key => $value) {
    if (...filter condition(s)...) {
        $new_array[$key] = $value;
    }
}

还有array_map()preg_grep()等...您可以根据需要修改/过滤数组。

答案 1 :(得分:0)

我真的很抱歉这篇文章太令人困惑了。我的代码是从源代码复制的,我一直在更改html和php中的名称和值来学习这个..

我把整个事情弄得一团糟,并通过以下方式解决了这个问题:

foreach ($_POST as $key=>$value) {
    if (stristr($key, "section")) {
        $section = $value;
        $section_name = $key;
            return;
    }
    echo "Key is: $key and Valus is: $value";
}


echo "<pre>";
print_r($_POST);
echo "</pre>";

答案 2 :(得分:0)

$_POST is array.if we use print_r($_POST); of above form, we find array:-
code:-
-------------

$data=array(); 
$new_array=array(); 
echo"<pre>";
print_r($_POST);
$data[]=$_POST['DataNameOne'];
$data[]=$_POST['DataNameTwo'];
$data[]=$_POST['DataNameThree'];
print_r($data);   
foreach($ as $key => $value) { 
          if (...filter condition(s)...) {  
           $new_array[$key]=$value;
         } }

output:-
-------------
Array
(
    [DataNameOne] => Value 1
    [DataNameTwo] => Value 2
    [DataNameThree] => Value 3
)

Array
(
    [0] => Value 1
    [1] => Value 2
    [2] => Value 3
)