1
foreach ($tests as $test) {
  $var = $test['somekey'];
}
echo $var;

如何将 foreach 的所有值放入 php 变量中?它似乎只拾取最后一个变量。

4

5 回答 5

2

you're overwriting $var on each iteration. with a dot as follows, this will append instead of overwrite.
$var .= $test['somekey'];

于 2013-07-02T22:35:22.680 回答
1

How about:

$data = array() ;
foreach ($tests as $test) {
  $data[] = $test['somekey'];
}

echo implode(" ; ", $data) ;
于 2013-07-02T22:35:24.337 回答
1

您正在寻找的答案取决于您想要做什么。如果您想要一个数组,请使用:

$var = array();
foreach ($tests as $test) {
    $var[] = $test['somekey'];
}
print_r($var); 

或者如果您的 PHP 版本 >= 5.5.0,您可以使用:

$var = array_column($tests, $test);

如果您想要一个字符串,请使用:

$var = "";
foreach ($tests as $test) {
    $var .= $test['somekey'];
}
print_r($var);

如果您想要一个数字,请使用:

$var = 0;
foreach ($tests as $test) {
    $var += $test['somekey'];
}
print_r($var);  

您也可以使用任何赋值运算符而不是+=来做任何您想做的事情!

于 2013-07-02T22:51:55.960 回答
0

它似乎只拾取最后一个变量

那是因为$var是一个变量,而不是一个数组。您只是多次覆盖同一个变量:唯一保留的值是最后一个。

在代码中转换$var为数组。

$var = new array();

然后使用类似的东西array_push在数组中添加值

foreach ($tests as $test) {
  array_push($var, $test['somekey']);
}

最后,您可能想要打印出该值。echo不是打印数组的理想方式。我建议使用包含在标签中的print_rvar_dump 。<pre>

echo ("<pre>");
var_dump($var);
echo ("</pre>");
于 2013-07-02T22:46:20.780 回答
0

你可以试试 :

$var = array_map(function ($v) {
    return $v['somekey'];
}, $tests);

echo implode(PHP_EOL, $var);
于 2013-07-02T22:39:59.890 回答