在PHP中的foreach循环中存储数组数据

时间:2014-01-06 17:09:02

标签: php arrays foreach

我想知道如何存储来自foreach循环的所有值,我知道我在循环中重新初始化但我不确定如何存储数据。继承我的基本循环:

$array = array("v1", "v2", "v3", "v4");
foreach($array as $row){
    $arr = array('val' => $row);
    echo $row;
}
print_r($arr);

因此,当我使用print_r($arr)时,输出的唯一内容将是v4,我知道值存在,因为echo $row;确实单独返回每个输出。

我的问题是如何将每个行实例存储在我的数组中?

3 个答案:

答案 0 :(得分:3)

创建一个新数组,填充它:

$array = array("v1", "v2", "v3", "v4");

$newArray = array();

foreach($array as $row){
    // notice the brackets
    $newArray[] = array('val' => $row);

}

print_r($newArray);

答案 1 :(得分:0)

看起来你的数组存储错误了。

尝试调整$ arr = array('val'=> $ row);

为:

$ arr [] = array('val'=> $ row);

这将设置它,以便您将每一行作为一个单独的数组拾取,您可以轻松浏览。

希望这有帮助!

答案 2 :(得分:0)

如果我正确阅读,您希望将数组从简单值转换为'val' - >数字的键值对。 array_map是进行这种转换的简洁方法。

$array = array("v1", "v2", "v3", "v4");
$arr = array_map(function($v) { return array('val'=>$v); }, $array);
print_r($arr);

虽然在这种情况下无关紧要,但如果需要,array_map还具有保留键的便利功能。

请注意,您还可以为array_map提供命名函数,而不是提供内联实现,这在转换方法变得更复杂的情况下会很好。有关array_map here的更多信息。