【问题标题】:How to convert an array all value without using foreach loop [duplicate]如何在不使用foreach循环的情况下转换数组的所有值[重复]
【发布时间】:2015-12-30 07:27:36
【问题描述】:

我想在不使用任何循环的情况下转换数组值 我有一个类似这样的数组

Array
  (
[0] => Array
       (
        [month] => August
       )

[1] => Array
    (
        [month] => July
     )

[2] => Array
    (
        [month] => October
    )
)

我想把上面的数组转换成下面的格式

Array
(
    [0] => August
    [1] => July
    [2] => October
)

不使用任何循环

【问题讨论】:

  • 我试过 call_user_func_array ,但它只返回一个我想要的值
  • 只是好奇您为什么要这样做?折叠一个数组以创建多个数组,其中包含一个字符串值似乎很愚蠢。
  • 你有答案@Matt
  • 我不明白你的结果。这不是一个变量,而是 3 个不同的变量。
  • 请解释您的要求 - 不清楚。

标签: php arrays loops multidimensional-array


【解决方案1】:

如果您使用的是 PHP 5.5 或更高版本,则可以使用 array_column 函数:

$new_array = array_column($array, 'month');

在旧版本的PHP中,可以使用array_map

$new_array = array_map(function($x) { return $x['month']; }, $array);

DEMO

【讨论】:

  • 我有一个 mysql 查询,其中结果是上述数组格式,我想将该数组转换为以下数组格式,并且值是动态的 -
  • 以下数组格式不是数组。这不是什么。这只是在 3 个不同的数组上调用 print_r 的输出。
  • 也许你想要的是array("August", "July", "October")
  • 是的,它调用 print_r 的输出
  • 是的,我想要数组(“八月”、“七月”、“十月”)?
【解决方案2】:

这是我的代码,所以请更改它....然后试试这个

 $a = array(0, 4, 5, 7);
// PHP 5.3+ anonmymous function.
$output = array_map(function($val) { return $val+1; }, $a);

print_r($output);
Array
(
    [0] => 1
    [1] => 5
    [2] => 6
    [3] => 8
)

由 OP 编辑​​:

function doubleValues($a) {
  return array_map(function($val) { return $val * 2; }, $a);
}

【讨论】:

  • 我如何将我的代码更改为这种格式
  • 这与问题有什么关系?他没有改变数组中的值。
猜你喜欢
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 2015-02-24
相关资源
最近更新 更多