Php 从另一个数组的元素创建数组

Php 从另一个数组的元素创建数组,php,arrays,multidimensional-array,foreach,Php,Arrays,Multidimensional Array,Foreach,我有一个数组叫array3 Array ( [0] => Commercial [1] => Infrastructure ) 我想迭代这个数组的每个元素,并根据这些值创建单独的数组。我已经试过了 $array4 = array(); $array5= array(); foreach ($array3 as $value) { $array4[] = array('v' => count(search($rows, 'domaindesc', $

我有一个数组叫array3

    Array
(
    [0] => Commercial
    [1] => Infrastructure
)
我想迭代这个数组的每个元素,并根据这些值创建单独的数组。我已经试过了

$array4 = array();
$array5= array();
foreach ($array3 as $value) {
  $array4[] = array('v' => count(search($rows, 'domaindesc', $value)));
  $array4[] = array('v' => $value);
  $array5[] = array('c' => $array4);

}
搜索函数从另一个数组返回加工元素的数量。我从上述代码得到的输出是

Array
(
    [0] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 5
                        )

                    [1] => Array
                        (
                            [v] => Commercial
                        )

                )

        )

    [1] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 5
                        )

                    [1] => Array
                        (
                            [v] => Commercial
                        )

                    [2] => Array
                        (
                            [v] => 1
                        )

                    [3] => Array
                        (
                            [v] => Infrastructure
                        )

                )

        )

)
我想得到的是

Array
(
    [0] => Array
        (
            [c] => Array
                (
                    [0] => Array
                        (
                            [v] => 5
                        )

                    [1] => Array
                        (
                            [v] => Commercial
                        )

                )

        )

    [1] => Array
        (
            [c] => Array
                (                    

                    [0] => Array
                        (
                            [v] => 1
                        )

                    [1] => Array
                        (
                            [v] => Infrastructure
                        )

                )

        )

)

感谢您提供的任何帮助

每次迭代,您都将添加到$array4并将其放入$array5中

尝试在每次迭代中重新声明$array4:

$array5 = array();
foreach ($array3 as $value) {
  $array4 = array();
  $array4[] = array('v' => count(search($rows, 'domaindesc', $value)));
  $array4[] = array('v' => $value);
  $array5[] = array('c' => $array4);

}
编辑:对于风格,我个人会这样写:

$array5 = array();
foreach ($array3 as $value) {
    $array5[] = array('c' => array(
        array('v' => count(search($rows, 'domaindesc', $value))),
        array('v' => $value),
    ));
}
请注意,数组声明中的尾随逗号是有意的,这使得其他开发人员在需要时更容易向声明中添加更多项。PHP允许这样做,我利用了它

EDIT2:如果您不担心PHP代码在5.4之前的PHP版本上不起作用,我更喜欢使用方括号来声明数组,而不是数组()。它看起来更干净:

$array5 = [];
foreach ($array3 as $value) {
    $array5[] = ['c' => [
        ['v' => count(search($rows, 'domaindesc', $value))],
        ['v' => $value],
    ]];
}

帮个忙,使用有意义的数组名。