【问题标题】:How do I combine multiple arrays into a new array?如何将多个数组组合成一个新数组?
【发布时间】:2011-12-22 19:37:52
【问题描述】:

我将$_POST$_FILES 变量保存到我的对象newUpload 的对象属性中。我正在尝试生成我的 SQL 更新语句,但在组合数组时遇到了问题。如何创建一个组合多个数组的数组?全局关键字令人困惑,应该避免出现?

$array = array();
foreach ($this->post as $value) {
    array_push($array, $value);
}
foreach ($this->files as $key => $value) {
    $list = array('name', 'type', 'size', 'extension', 'filetime');
    if (in_array($key, $list)) {
        array_push($array, $value);
    }
}
$array .= $this->moved['filepath'];
echo $array;

更新: 错误使用array_push 而不是$array[] = $value。我认为数组的范围是 foreach 循环的本地范围,但是 array_push 函数是错误的。下面的代码有效。衷心感谢大家 - 你们的 cmets 真的帮助我想出了解决方案。

foreach ($this->files as $key => $value) {
    $array2 = array('name', 'type', 'size', 'extension', 'filetime');
    if (in_array($key, $array2)) {
        $array[] = $value;
    }
}        
$array = array_merge($array, $this->post);
$array[] = $this->moved['filepath'];

【问题讨论】:

  • 您能否举例说明数组在组合之前的外观以及组合后的外观?

标签: php arrays foreach scope array-push


【解决方案1】:

PHP 有一个函数可以做到这一点,称为 array_merge 并在你的情况下使用它,你可以这样做:

$array = array_merge($_POST, $_FILES);

【讨论】:

  • 有一个过滤器:$list = array('name', 'type', 'size', 'extension', 'filetime');
  • 提到你也可以像这样合并数组: $result = $array2 + $array1;等于 $result = array_diff_key($array1, $array2) + $array2;这更适用于您不必担心相同的键是两个数组的情况
猜你喜欢
  • 2019-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多